Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: После выполнения mysql_query("UPDATE... указанная строка очищается
 
 автор: Axion   (03.05.2009 в 13:02)   письмо автору
 
 

Приветствую!

Не могу разглядеть у себя ошибку - может кто-то из сообщества с лучшим зрением ткнет меня носом?

Суть такова: есть некая форма из которой POST'ом передается ряд значений такому вот скрипту:


$sql='UPDATE `cat_news` SET `news_date`="'.$temp_date.'", `additional_info`="'.addslashes($_POST['preambula']).'", `additional_info`="'.addslashes($_POST['news_body']).'" WHERE `id`='.$_GET['id'];
$db->update_sql($sql);


Как видно, этот скрипт дергает метод класса $db для выполнения запроса. Вот код этого метода:

function update_sql($sql) {
      $this->last_query = $sql;
      $r = mysql_query($sql);
      if (!$r) {
         $this->last_error = mysql_error();
         return false;
      }
      $rows = mysql_affected_rows();
      if ($rows == 0) return true;  
      else return $rows;
   }




То есть совсем ничего хитрого. Но тем не менее при исполнении такого запроса - в строке в таблице, опреленной $_GET['id'], все значения сбрасываються в пустые. Причем если я сделаю вывод текста запроса на екран, а потом Ctrl+C/Ctrl+V в любой MySQL менеджер, то запрос отрабатывает как надо. Если я ставлю в $sql произвольный запрос без переменных (например, "UPDATE cat_news SET preambula = 'abcdef' WHERE id = 5") - он тоже срабатывает. Проверил нужные значения в массивах $_POST и $_GET - все на месте...
На всякий случай структура искомой таблицы:


CREATE TABLE `cat_news` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`news_date` date NOT NULL,
`preambula` varchar(1000) NOT NULL,
`news_body` varchar(4000) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8



Заранее благодарен за ответы.

  Ответить  
 
 автор: Trianon   (03.05.2009 в 13:54)   письмо автору
 
   для: Axion   (03.05.2009 в 13:02)
 

> $sql='UPDATE `cat_news` SET `news_date`="'.$temp_date.'", `additional_info`="'.addslashes($_POST['preambula']).'", `additional_info`="'.addslashes($_POST['news_body']).'" WHERE `id`='.$_GET['id'];
$db->update_sql($sql);

>Причем если я сделаю вывод текста запроса на екран, а потом Ctrl+C/Ctrl+V в любой MySQL менеджер, то запрос отрабатывает как надо.

>CREATE TABLE `cat_news` (
>`id` bigint(20) unsigned NOT NULL auto_increment,
>`news_date` date NOT NULL,
>`preambula` varchar(1000) NOT NULL,
>`news_body` varchar(4000) default NULL,
>PRIMARY KEY (`id`)
>) ENGINE=MyISAM DEFAULT CHARSET=utf8


news_date по идее должно заполнить.
А второго заполняемого поля ( которое в запросе перечислено почему-то дважды) у Вас в структуре таблицы нет.
Насчет того, что Вы копируете именно этот запрос - чушь.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования