Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL选择查询返回整数和整数+;一串_Php_Mysql_Sql - Fatal编程技术网

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是一种编程语言:),以避免强制,使第二个查询返回空行。可能吗?那是另一个问题(我不知道答案)。我建议你为此提出一个新问题。