1

所以我正在用 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';
4

1 回答 1

0

我认为$planid是空的。打印$planid值并再次检查。

于 2012-10-17T05:07:58.670 回答