SELECT * FROM 'table_name' WHERE 'column_name' = "60dsfdsf"
В phpmyadmin, если запустить этот запрос, он будет извлекать значение column_name
60 form table_name
.
Здесь column_name
type - int и primary.
Я ожидал, что не найду никакой ценности, но column_name
значение column_name
60
в чем причина этого?
Ну, это MySQL, который отличает значение по типу. Если столбец имеет тип INT и переданное значение содержит строку с номером, она будет извлекать из нее номер.
Согласно типу-преобразованию-MySql
Когда оператор используется с операндами разных типов, происходит преобразование типов, чтобы сделать операнды совместимыми. Некоторые преобразования происходят неявно. Например, MySQL автоматически преобразует числа в строки по необходимости, и наоборот.
Так что в вашем случае,
SELECT * FROM
table_name WHERE
column_name = "60dsfdsf"
фактически преобразуется в
SELECT * FROM
table_name WHERE
column_name = "60"
РЕДАКТИРОВАТЬ:
если ваша строка начинается с номера, то MySql примет это число.
например. 60dsfdsf
- 60
НО, если строка имеет алфавиты изначально, тогда результат будет
например. dsfdsf60
для MySQL - 0
.
Поэтому будьте осторожны, так как это не будет одинаковым результатом для каждого случая. Лучше, прежде чем передавать значение, преобразовать или извлечь номер, а затем отправить его на запрос.
Надеюсь это поможет
Если я не ошибаюсь, он автоматически передает данные в требуемый тип. В этом случае он будет игнорировать последние символы и перейти с номерами от начала строки
Если вы начнете с алфавитного символа, вы увидите, что он не загрузит никакого значения.