Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: mysql_query
Форумы портала PHP.SU » » Вопросы новичков » mysql_query

Страниц (1): [1]
 

1. Bio man - 29 Сентября, 2011 - 20:31:22 - перейти к сообщению
почему mysql_query возвращает false если строка обработана ф-цией mysql_real_escape_string????? без обработки все нормально
2. Champion - 29 Сентября, 2011 - 20:35:20 - перейти к сообщению
потому что не надо обрабатывать весь запрос, а надо только строковые параметры, которые в него входят
(Добавление)
а еще можно вывести строку, посмотреть на нее, вывести mysql_error и увидеть ошибку. А еще в новых версиях php функции mysql_* будут убраны, так что пользуйтесь mysqli или pdo, например
3. Bio man - 29 Сентября, 2011 - 20:42:33 - перейти к сообщению
кароче вот такая картина $sql = string 'SELECT * FROM `users` WHERE `username` = 'Bio man'' (length=50)

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 '\'Bio man\'' at line 1
(Добавление)
зачем тогда передовать ссылку соединения в mysql_real_escape_string если им нельзя обработать весь запрос целиком?
(Добавление)
как оптимизировать
PHP:
скопировать код в буфер обмена
  1. $array = $db->getArray("SELECT * FROM `users` WHERE `username` = '{$db->escapeString($name)}'");

вот твк не работает
PHP:
скопировать код в буфер обмена
  1. $array = $db->getArray("SELECT * FROM `users` WHERE `username` = ".$db->escapeString($name));

(Добавление)
все, сам понел
PHP:
скопировать код в буфер обмена
  1.     $array = $db->getArray('SELECT * FROM `users` WHERE `username` = "'.$db->escapeString($name).'"');

(Добавление)
Цитата:
зачем тогда передовать ссылку соединения в mysql_real_escape_string если им нельзя обработать весь запрос целиком?
4. Мелкий - 29 Сентября, 2011 - 22:36:15 - перейти к сообщению
Bio man пишет:
зачем тогда передовать ссылку соединения в mysql_real_escape_string если им нельзя обработать весь запрос целиком?

Для работы с несколькими соединениями одновременно.
А нужно экранирование строк и невозможно его применять ко всему запросу по одной и той же причине - парсер хоть MySQL, хоть PHP не сможет достоверно выяснить, где запрос, а где - SQL-инъекция.

 

Powered by ExBB FM 1.0 RC1