2014-11-14 3 views
-1

Это мой код:MySQLi и передавая запрос в качестве параметра - никаких результатов

$sql = $_POST['sql']; 
.... 
$result = $mysqli->query($sql); 

Это не возвращает никаких результатов. Таким образом, я повторил переменную SQL $ и это результат:

SELECT o.entity_id, o.increment_id FROM sales_flat_order o JOIN sales_flat_order_payment p ON o.entity_id = p.parent_id JOIN sales_flat_order_address a ON o.entity_id = a.parent_id WHERE a.country_id = \'DE\' ORDER BY o.entity_id DESC LIMIT 10; 

Теперь, когда я задаю этот переменные $ SQL непосредственно, она работает. В чем может быть проблема?

Благодаря

+1

Параметр '' \ '' в этом запросе, вероятно, производит синтаксис ошибка. Почему эти цитаты сбежали? Вы проверяли сообщения об ошибках SQL? У вас есть магические цитаты? Почему вы принимаете произвольные запросы от пользователей в первую очередь? – deceze

ответ

0

Ну, во-первых вы можете проверить $result и вывода последней ошибки с $mysqli->error, когда оно ложно, что даст вам информацию о том, что случилось.

Во-вторых, вы НЕ должны выполнять запрос, исходящий из параметра POST или GET, так вы позволяете кому-либо делать что-либо в вашей базе данных с помощью SQL-инъекции. Это серьезное нарушение безопасности.

В-третьих, проблема, вероятно, при кодировании POST (обратите внимание на кавычки \'DE\'), так что если вы urldecode и/или stripslashes ваш $sql было бы, вероятно, работать

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