вставить - не записанное поле в таблице - PullRequest
3 голосов
/ 12 декабря 2010
INSERT INTO `jos1_content` 
  (`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
VALUES  
  ($title, $introtext, $fulltext, 1, 1, $catid, 5)

Запрос состоит из php-скрипта.Вывод переменных показывает, что они не пусты.По запросу phpMyAdmin выдает ошибку:

1064 - у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса, чтобы использовать около '

Ответы [ 3 ]

7 голосов
/ 12 декабря 2010

Вам нужно заключить в PHP переменные, которые вставляются в поля строкового типа, кавычки:

INSERT INTO `jos1_content` 
(`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
VALUES  
('$title', '$introtext', '$fulltext', 1, 1, $catid, 5)
7 голосов
/ 12 декабря 2010

Вы должны использовать одинарные кавычки для обозначения строк в SQL - используйте:

INSERT INTO `jos1_content` 
  (`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
VALUES  
  ('". $title ."', '". $introtext ."', '". $fulltext ."', 1, 1, $catid, 5)

Более безопасным средством было бы использовать:

$query = sprintf("INSERT INTO `jos1_content` 
                    (`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
                  VALUES  
                   ('%s', '%s', '%s', 1, 1, %d, 5)",
        mysql_real_escape_string($title),
        mysql_real_escape_string($introtext),
        mysql_real_escape_string($fulltext),
        $catid);

Справка:

3 голосов
/ 12 декабря 2010

Читайте о готовых утверждениях в руководстве вашего языка программирования или используйте mysql_escape_string.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...