我已经搜索和搜索并尝试了我读过的内容,但出于某种原因,当我使用变量而不是硬编码值时,我的查询失败了。
这是我的查询:
$bugzilla_query="SELECT * FROM profiles WHERE userid='".$bugzilla_id."'";
我通过执行以下操作获取 cookie 的值:
$bugzilla_id = $_COOKIE["Bugzilla_login"];
我开始怀疑查询是错误的,但是保存 cookie 值的变量没有正确检索它,即使它看起来是正确的,但是如果我再次设置 $bugzilla_id = 642;
它仍然不起作用,但如果我这样做 $bugzilla_query="SELECT * FROM profiles WHERE userid=642";
它会完美地工作。
嗯,糊涂了!
最佳答案
通常,您永远不想将任何可以由用户直接修改的值放入查询中。此外,如果那应该是一个数字,为什么在启用变量的查询中将其放在单引号中,而不是在硬编码查询中?注意到区别了吗?试试这个:
$bugzilla_query = sprintf("SELECT * FROM profiles WHERE userid = %d", $bugzilla_id);
这将确保在进入查询之前将其转换为整数。
关于PHP/MySQL - 如果使用变量而不是硬编码值,查询将失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5835630/