ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

[MySQL][ЗАМЕТКА] Where name ='a' ='b'
  #1  
Старый 04.09.2009, 14:40
Аватар для Krist_ALL
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме:
1996429

Репутация: 468


Отправить сообщение для Krist_ALL с помощью ICQ
По умолчанию [MySQL][ЗАМЕТКА] Where name ='a' ='b'

Хочу разъяснить непонятку с name='a'='b'

Допустим, у нас есть такой запрос:
PHP код:
SELECT FROM users WHERE name='admin'='a' 
Давайте посмотрим, как такой запрос обработает mysql:
1. name ='admin'='a' разбирается как ('name'='admin')='a'
2. Идет сравнение 'name' и 'admin'. Эти строки не равны => результат 0
3. Идет сравнение 0 и 'с'. Разные типы данных. Булевой и стринг. Происходит преобразование типа стринг в булен и 'с' превращается в 0
4. 0 =0 => 1 => TRUE

Замечания:
1. Mysql должен быть настроен на преобразование типов
2. Mysql должен быть настроен так, чтобы при сравнении 'а' и 'с' получалось 0, а не false, потому что если скобка даст false, тогда 'с' будет преобразовано в true => false != true => return 0

Источник: http://bugs.mysql.com/bug.php?id=39337
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ