所以我正在用 PHP/MySQL 编写一个网站。我有一行适用于通过 $_GET 传递的 4 位数字,但不适用于一位数或三位数。
这是我使用的代码。
$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 位数字。我使用的数据库键字段是主键,它是 type int(11)
。
有人可以帮我吗?我快要沮丧地把头发扯掉了!
提前感谢您的宝贵时间!
编辑:进一步测试的更多信息——取出“blnWebEnabled = 'yes'”仍然给出同样的错误。尝试将前导零添加到 $planid 直到它的 strLen 至少为 4 仍然会产生相同的错误,尽管该查询在直接输入 MySQL 控制台时也可以工作。以下查询通过 PHP 可以正常工作:
SELECT * FROM plans WHERE blnWebEnabled='yes' AND planid='1000';