一旦输入是两位数,PHP/MySQL,查询就不会返回数据

Lia*_*iam 1 php mysql

我有这样的查询......

$levLimit = $_GET['levLimit'];

$sql = "SELECT * FROM users WHERE `level` < '$levLimit'";
Run Code Online (Sandbox Code Playgroud)

这个工作正常,当levLimit等于任何数字,最多9,一旦我尝试10,它什么都不返回.

这不会给我任何mysql或php错误,有什么明显的明显吗?

Fun*_*ner 6

您需要将其强制转换(痛苦一点)或将列类型更改为可以执行数学运算的列类型.

MySQL无法按照您现在尝试查询的方式对文本进行数学运算,只能使用整数.

警告:您的代码对SQL注入是开放的.请使用准备好的声明.

参考文献:

您还可以使用(int)GET数组的值:

$levLimit = (int)$_GET['levLimit'];
Run Code Online (Sandbox Code Playgroud)

这不需要准备好的陈述,但总是最好的.


编辑:

"这也没有给我任何mysql或php错误."

那是因为你在查询中将变量括在单引号中,MySQL将其作为字符串读出,并且你说列的类型是VARCHAR.

  • 如果您没有在变量周围使用单引号,则会抛出错误.