2013-11-20 2 views
-1

Когда я бегаю запрос, например:Запрос Mysql, где column_name = a совпадает с именем_ column = 0?

"SELECT * FROM program_detaljer где program_ref_id = 'а'"

Все, что я получаю от результата program_ref_id = 0.

Почему это происходит, когда столбец program_ref_id должен быть int (11)?

+0

так что столбец program_ref_id является INT, и вы сравниваете его с символом в запросе? – Matthew

+0

Я сравнил его с персонажем по ошибке и получил ошибку на моем сайте. Решила его с подготовленным заявлением, и стало любопытно, почему это произошло –

ответ

1

Вы должны прочитать о types conversion in mysql

Перед сравнение MySQL пытается преобразовать строку ('а') на номер ('0').

mysql> SELECT 0='a'; 
+-------+ 
| 0='a' | 
+-------+ 
|  1 | 
+-------+ 
1 row in set, 1 warning (0.00 sec) 

Вы можете проверить значение перед запросом. Или замените = на LIKE:). (Но лучше проверить тип значения до этого.)

mysql> SELECT 0 LIKE 'a'; 
+------------+ 
| 0 LIKE 'a' | 
+------------+ 
|   0 | 
+------------+ 
1 row in set (0.00 sec) 
Смежные вопросы