MySQL语法错误 - 但仅适用于某些变量

时间:2012-10-17 04:20:00

标签: php mysql

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

1 个答案:

答案 0 :(得分:0)

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