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