Почему мой запрос не работает? - PullRequest
1 голос
/ 09 января 2011

мой сайт имеет команду PHP:

mysql_query("SELECT * FROM users WHERE id=" . $_GET["id"]) or die(mysql_error());

Когда я ввожу URL

http://example.com/index.php?id=1;%20UPDATE%20users%20SET%20password=123%20WHERE%20id=1

Я получаю следующую ошибку:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE users SET password=abc WHERE id=1' at line 1

Но в phpmyamin запрос выполняется успешно. Что здесь не так? Почему это не выполняется в браузере?

Ответы [ 2 ]

7 голосов
/ 09 января 2011

"mysql_query() отправляет уникальный запрос (несколько запросов не поддерживаются)"

Если вы намерены разрешить MySQL инъекцию таким образом, mysql_query это не понравится. Если нет, mysql_real_escape_string($_GET["id"]);, чтобы предотвратить «инъекцию»

4 голосов
/ 09 января 2011

mysql_query() не поддерживает несколько запросов в одном вызове (который вы пытаетесь внедрить):

SELECT * FROM users WHERE id=1;
UPDATE users SET password=abc WHERE id=1

Отсюда и «синтаксическая ошибка».

Теперь идите защищатьэтот запрос.

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