Если предположить, что id
- это числовой столбец, MySQL автоматически преобразует ваш параметр в число, чтобы типы данных совпадали перед сравнением.Это работает безупречно, если кастинг не дает неожиданных результатов.Например, эти выражения с совпадают со строкой с id = 10, потому что все строки приводятся к 10 :
id='10'
id=' 10'
id='00010'
id='10foo'
Следующие строки не будут соответствовать строке, так как строки, которые невозможно проанализировать, приводятся к 0 и 10 <> 0:
id='foo10'
id='bar'
Когда использовать каждый?Если вам нужна строка, вам нужно заключить ее в кавычки (другого способа набрать строку и получить действительный SQL нет).Если вам нужно число, оно должно быть заключено в кавычки (в противном случае вы получите строку, которая содержит число).Конечно, вы всегда можете предоставить числа в виде строк и позволить MySQL выполнить преобразование, но это на самом деле ничего не добавляет к запросу, кроме одного дополнительного шага и, возможно, неверных результатов, которые остаются незамеченными.