Php MySQL选择查询返回整数和整数+;一串
我的表名Php MySQL选择查询返回整数和整数+;一串,php,mysql,sql,Php,Mysql,Sql,我的表名students uid | name -----+------- 10 | John 11 | Smith **数据类型:** uid int(11) name varchar(256) 我的查询: SELECT name FROM students WHERE uid = '10' SELECT name FROM students WHERE uid = '10someChar' 返回:John 我的第二个问题: SELECT name FROM stud
students
uid | name
-----+-------
10 | John
11 | Smith
**数据类型:**
uid int(11)
name varchar(256)
我的查询:
SELECT name FROM students WHERE uid = '10'
SELECT name FROM students WHERE uid = '10someChar'
返回:John
我的第二个问题:
SELECT name FROM students WHERE uid = '10'
SELECT name FROM students WHERE uid = '10someChar'
返回:John
为什么第二个查询返回John?uid列是整数,您在where子句中传递的值首先强制为整数。。。大多数整数转换算法只是获取他们能在字符串中找到的第一组数字(并忽略其后任何不匹配的数字)。。。因此,它查找10并忽略其余的MySQL会根据需要自动将数字转换为字符串,反之亦然 还可以使用CAST()函数显式地将数字转换为字符串 读一读 MySQL曾经试图返回一些东西——即使是错误的类型,他也会自动进行转换 您应该使用PHP进行筛选,以验证您的业务规则
Postgresql应该抛出一个异常include create script for the table length for int(11)?@phpsessionid include create script for the table
students
What is create script?create table students(…)…
我知道强制在编程语言中发生,SQL也以同样的方式工作吗?SQL是一种编程语言:),以避免强制,使第二个查询返回空行。可能吗?那是另一个问题(我不知道答案)。我建议你为此提出一个新问题。