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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: mysql_query

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: возврашает false
Bio man
Отправлено: 29 Сентября, 2011 - 20:31:22
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




почему mysql_query возвращает false если строка обработана ф-цией mysql_real_escape_string????? без обработки все нормально
 
 Top
Champion Супермодератор
Отправлено: 29 Сентября, 2011 - 20:35:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




потому что не надо обрабатывать весь запрос, а надо только строковые параметры, которые в него входят
(Добавление)
а еще можно вывести строку, посмотреть на нее, вывести mysql_error и увидеть ошибку. А еще в новых версиях php функции mysql_* будут убраны, так что пользуйтесь mysqli или pdo, например
 
 Top
Bio man
Отправлено: 29 Сентября, 2011 - 20:42:33
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




кароче вот такая картина $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 если им нельзя обработать весь запрос целиком?
 
 Top
Мелкий Супермодератор
Отправлено: 29 Сентября, 2011 - 22:36:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Bio man пишет:
зачем тогда передовать ссылку соединения в mysql_real_escape_string если им нельзя обработать весь запрос целиком?

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


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB