Php Where子句在传递未知字符串值后检索数据。为什么?

Php Where子句在传递未知字符串值后检索数据。为什么?,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,在phpmyadmin中,如果运行此查询,则它将从表名称中检索列名称值60 这里的列\u name类型是int和primary 我本以为找不到任何值,但它正在检索column\u namevalue 60 这背后的原因是什么 好吧,这是MySQL,它正在根据it类型进行值转换。如果列的类型为INT,并且传递的值包含具有数字的字符串,则它将从中提取数字 按照 当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。有些转换是隐式进行的。例如,MySQL会根据需要自动将数字转换为字符串,

在phpmyadmin中,如果运行此查询,则它将从
表名称
中检索
列名称
值60

这里的
列\u name
类型是int和primary

我本以为找不到任何值,但它正在检索
column\u name
value 60


这背后的原因是什么

好吧,这是MySQL,它正在根据it类型进行值转换。如果列的类型为INT,并且传递的值包含具有数字的字符串,则它将从中提取数字

按照

当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。有些转换是隐式进行的。例如,MySQL会根据需要自动将数字转换为字符串,反之亦然

所以在你的情况下

表名
中选择*其中
列名
=“60dsfdsf”

实际上正在转换为

表_name
中选择*其中
列_name
=“60”

编辑:

如果字符串以数字开头,那么MySql将采用该数字

例如,
60dsfdsf
60

但是,如果字符串最初有字母表,那么结果将是

例如,
dsfdsf60
是MySQL的
0

所以要小心,因为每种情况下的结果并不相同。更好的方法是,在传递值之前转换或提取数字,然后将其发送到查询


希望这会有所帮助。好吧,这是MySQL,它正在根据it类型进行值的转换。如果列的类型为INT,并且传递的值包含具有数字的字符串,则它将从中提取数字

按照

当运算符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。有些转换是隐式进行的。例如,MySQL会根据需要自动将数字转换为字符串,反之亦然

所以在你的情况下

表名
中选择*其中
列名
=“60dsfdsf”

实际上正在转换为

表_name
中选择*其中
列_name
=“60”

编辑:

如果字符串以数字开头,那么MySql将采用该数字

例如,
60dsfdsf
60

但是,如果字符串最初有字母表,那么结果将是

例如,
dsfdsf60
是MySQL的
0

所以要小心,因为每种情况下的结果并不相同。更好的方法是,在传递值之前转换或提取数字,然后将其发送到查询


希望这有助于

如果我没有弄错,它会自动将数据转换为所需的类型。在这种情况下,它将忽略最后一个字符,并从字符串开头开始使用数字


如果以字母字符开头,您将看到它不会加载任何值。

如果我没有弄错,它会自动将数据转换为所需的类型。在这种情况下,它将忽略最后一个字符,并从字符串开头开始使用数字

如果以字母字符开头,您将看到它不会加载任何值

SELECT * FROM `table_name` WHERE `column_name` = "60dsfdsf"