所以我用PHP / MySQL编写了一个网站。我有一行适用于通过$ _GET传递的4位数字,但不适用于单个数字或3位数字。
这是我用过的代码。
$planid = $_GET["planid"];
$dbObj->dbQuery = "SELECT * FROM plans WHERE blnWebEnabled='yes' AND planid='$planid'";
使用var_dump,我已经验证$ planid是正确的: string(1)“1” 实际的SQL查询语句是正确的: string(60)
SELECT * FROM plans WHERE blnWebEnabled='yes' AND planid='1';
事实上,我已经直接在MySQL控制台中为字符语句输入了完全相同的字符,并且按照预期提出了单个记录。但由于某种原因,当它击中浏览器时,它会给我这个错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
我也试过让SQL语句说:
SELECT * FROM plans WHERE blnWebEnabled='yes' AND planid=1;
SELECT * FROM plans WHERE blnWebEnabled='yes' AND planid = 1;
SELECT * FROM plans WHERE blnWebEnabled = 'yes' AND planid = '1';
......以及其他变体。
疯狂的是它会很乐意接受4位数字。我正在使用的数据库关键字段是主键,它的类型为int(11)
。
提前感谢您的时间!
编辑:进一步测试的更多信息 - 取出“blnWebEnabled ='yes'”仍然会出现同样的错误。 尝试将前导零添加到$ planid,直到它具有至少为4的strLen仍然会产生相同的错误,尽管该查询在直接输入MySQL控制台时也有效。 以下查询通过PHP正常工作:
SELECT * FROM plans WHERE blnWebEnabled='yes' AND planid='1000';
答案 0 :(得分:0)
我认为$planid
是空的。打印$planid
值并再次检查。