2013-11-16 3 views
1

Я не могу вставить идентификатор и имя в таблицу myTable MySQL, используя следующий синтаксис PHP. id - целое поле, а name - поле varchar.INSERT Ошибка синтаксиса запроса в PHP и MySQL

$query="INSERT INTO myTable (id, name) VALUES (".$_SESSION["id"].", ".$_SESSION["name"].");"; 

Есть ли что-то не так с вышеуказанным синтаксисом? В соответствии с моим правом, потому что, если вставлять жестко закодированные значения, они вставляются штрафом.

ответ

3

Да, вы должны использовать одиночные кавычки для имени

$query="INSERT INTO myTable (id, name) VALUES (" . $_SESSION["id"] . ", '" . $_SESSION["name"]."');"; 

Также , , попробуйте не конструировать запросы вручную, используя конкатенацию строк/замещение. Это может быть опасно, если ваш $_SESSION (каким-то образом) содержит контент, который может полностью обрабатывать запросы.

Читайте о SQL Injection и what PHP offers.

+0

спасибо за решение и предложение по SQL-инъекции – user2998401

0

использование этого

$query="INSERT INTO myTable (id, name) VALUES ({$_SESSION["id"]},'{$_SESSION["name"]}');"; 
1

name является зарезервированным словом. Положите backticks вокруг него. Кроме того, вам нужны кавычки вокруг вашей переменной имени (и идентификатор, если это не целое число).

Ваш запрос должен выглядеть следующим образом:

$query="INSERT INTO myTable (id, `name`) VALUES (".$_SESSION["id"].", '".$_SESSION["name"]."')"; 
+0

Я не думаю так: http://dev.mysql.com/doc/refman/5.5 /en/reserved-words.html –

+1

Хм ... Ты прав. Он отформатирован как один в MySQL Workbench, поэтому, я думаю, я просто предположил, что это так. Во всяком случае, я всегда окружен именами колонок, чтобы быть в безопасности; Я потратил много часов на отладку столбца с именем 'desc', когда я впервые начинал ... –

+0

@EdCottrell - извините, я использовал поле ename, и в вопросах я поставил поле имени. – user2998401

2

Поместите значение строки в кавычках:

$query="INSERT INTO myTable (id, name) VALUES (".$_SESSION["id"].", '".$_SESSION["name"]."');"; 
2

Строка должна быть заключена в кавычки

$query="INSERT INTO myTable (id, name) VALUES (".$_SESSION["id"].", '".$_SESSION["name"]."');"; 
+0

хорошо, я забыл поставить одинарные кавычки вокруг поля имени. Спасибо, теперь он работает. – user2998401

Смежные вопросы