【发布时间】:2011-05-02 18:34:41
【问题描述】:
我已经搜索和搜索并尝试了我读过的内容,但由于某种原因,我的查询在使用变量而不是硬编码值时失败。
这是我的查询:
$bugzilla_query="SELECT * FROM profiles WHERE userid='".$bugzilla_id."'";
我通过执行以下操作来获取 cookie 的值:
$bugzilla_id = $_COOKIE["Bugzilla_login"];
我开始怀疑查询是错误的,但是保存 cookie 值的变量没有正确检索它,即使它看起来正确但是如果我设置 $bugzilla_id = 642; 它仍然不起作用但如果我这样做 @ 987654324@ 完美运行。
嗯,糊涂了!
【问题讨论】:
-
用户
var_dump查看$bugzilla_query中的内容 -
确保正确转义数据以避免 SQL 注入
-
@Doug T:我不相信 PHP 中有 ." 和 .$ 标记。
-
@Neal - 似乎设置为 NULL。我所做的是编写了一个连接到 Bugzilla 数据库的函数,我回显
getBugzillaShortname();以获取值,因为我在函数末尾返回了一个变量。 -
用
var_dump($bugzilla_id)检查cookie中的值。它可能看起来像一个整数,但可能有隐藏的空格或其他东西。如果您使用引号进行查询,那么 mysql 可能会尝试直接进行整数->字符串比较并失败。