2016-05-17 1 views
-1

Как использовать php var так же, как имя столбца в php mysql?Как использовать php var так же, как имя столбца в php mysql?

Когда доступ к этому сайту

www.example.com/test.php?column=member_no&id=5 

я получить $_GET['column'] = member_no и $_GET['id'] = 5

Тогда, когда я проверить код, приведенный ниже, почему данные не обновляются?

$sql = "UPDATE table SET '".mysql_real_escape_string($_GET['column'])."' = '0' WHERE id = '".mysql_real_escape_string($_GET['id'])."' "; 
$dbQuery = mysql_query($sql); 
+0

Попробуйте _ "UPDATE таблица SET \'" .mysql_real_escape_string ($ _ GET [ 'столбец']). "\ '= '0' WHERE ID =«" .mysql_real_escape_string ($ _ GET [ 'ID']) . "'" _ –

+0

какая ошибка отображается? – JYoThI

+0

@mongmongseesee, Ваш ответ ждет вас после публикации вашего сообщения, но вы не отреагировали на него, если вам не нужно решение, тогда зачем задавать вопрос и тратить свое время. –

ответ

2

Использование названия Mysql поля в PHP имеет свою собственную конвенцию, вы не можете использовать ' для поданного имени, Вы должны использовать ` или оставить пустым.

$sql = "UPDATE table SET `".mysql_real_escape_string($_GET['column'])."` = '0' WHERE id = '".mysql_real_escape_string($_GET['id'])."'"; 
$dbQuery = mysql_query($sql); 

Примечание: mysql_* амортизируется в верхней версии уровень PHP и удалить из PHP 7. *, поэтому, пожалуйста, избегайте использовать их и начать с mysqli_* или PDO.

+0

Обратите внимание, что 'mysql_real_escape_string' не будет применять правильное экранирование для * имен столбцов *; как следует из названия, он ускользает для *** строкового синтаксиса ***, а не с помощью синтаксиса столбцов с разделителями обратных ссылок. Bottomline: это уязвимо для SQL-инъекции. – deceze

+0

@deceze, пожалуйста, отредактируйте мой ответ и добавьте их. –