Вставка переменных в MySQL Query - PullRequest
0 голосов
/ 27 декабря 2010

Как видите, у меня есть запрос, в который я хочу вставить переменные. Что не так с моим синтаксисом?

$query = "UPDATE house SET epname=".$newtitle" WHERE epid= ".$epid;

Ответы [ 3 ]

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

Основная синтаксическая ошибка:

…e=".$newtitle" W…
             ^^

Если вы собирались идти по пути объединения строк для создания операторов SQL, вам следует использовать тот факт, что двойные кавычки интерполируются. В результате получается намного более читаемый код.

$query = "UPDATE house SET epname=$newtitle WHERE epid=$epid";

Но подход разбивки строк ошибочен . Используйте подготовленные операторы (предпочтительно с PDO), с ними сложнее создавать уязвимости SQL-инъекций и (возможно) легче читать.

2 голосов
/ 27 декабря 2010

Являются ли ваши переменные строками?Вы захотите заключить их в кавычки для целей запроса MySQL.

Кроме того, вам не хватает оператора конкатенации (точка) после $ newtitle.

Если вы выводите значение$ query, вы должны увидеть ошибку:

UPDATE house SET epname=[value of newtitle] WHERE epid= [value of $epid]

Предполагая, что epname является значением char / varchar, а epid является целым числом, вы, вероятно, захотите сделать это:

$query = "UPDATE house SET epname = '" . mysql_real_escape_string($newtitle) . "' WHERE epid= " . $epid;

Если вы не используете функцию mysql_escape_string в своих строках, вы уязвимы для атак с использованием SQL-инъекций

0 голосов
/ 27 декабря 2010
$query = "UPDATE house SET epname=".$newtitle" WHERE epid= ".$epid;

должно быть

$query = "UPDATE house SET epname=".$newtitle." WHERE epid= ".$epid;

или лучше

$query = "UPDATE house SET epname= $newtitle WHERE epid= $epid";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...