问题描述
|
EDIT: I had a typo in my original post....the issue is a bit more complicated...i had a variable passed in not a raw string.
我想从MysqL数据库中打印特定于某个人的故事:
所以我有类似于以下代码:
$stuff =\"jamie\"
$query = \"SELECT * FROM person_stories WHERE person =$stuff\";
$result = MysqL_query($query) or die (\"didnt work\");
while($row = MysqL_fetch_array($result))
{
echo \"<a href = \'PersonStoryPage.PHP?pid=$row[id]\'>\" .$row[\'title\']. \" </a>\";
}
我一直在继续“辛勤工作”……我知道我的桌子person_stories
是空的,但这和错误一样吗?该表显然不会总是为空,因此我需要能够使用此代码块进行业务。
感谢帮助!
编辑2:实际错误是:
UnkNown column \'jamie\' in \'where clause\'
这很奇怪,因为它不应该将ѭ4解释为专栏!
解决方法
您没有在ѭ4周围加上单引号。尝试这个:
$query = \"SELECT * FROM person_stories WHERE person = \'jamie\'\"
编辑:
我看到帖子已被编辑。现在应该从此更改:
$stuff =\"jamie\"
$query = \"SELECT * FROM person_stories WHERE person =$stuff\";
像这样:
$stuff =\"jamie\"
$query = \"SELECT * FROM person_stories WHERE person=\'\" . mysql_real_escape_string($stuff) . \"\'\";
这不仅可以解决您的SQL语法错误,而且还可以保护您的应用程序免受讨厌的SQL注入漏洞的侵害。
, 您需要引用人员字段的条件值(注意Jamie周围的撇号):
$query = \"SELECT * FROM person_stories WHERE person = \'jamie\'\";
编辑:
已更新以匹配您的更新。如果使用的变量可能来自用户输入,则需要使用ѭ10来对SQL查询正确地转义该值(有助于防止SQL注入)。
$query = \"SELECT * FROM person_stories WHERE person = \'\" . mysql_real_escape_string($stuff) . \"\'\";
, 如果与字符串进行比较,则必须用\'\'括起来
尝试改变
$query = \"SELECT * FROM person_stories WHERE person =jamie\";
至
$query = \"SELECT * FROM person_stories WHERE person = \'jamie\'\";
在我看来,最好修改这一行:
echo \"<a href = \'PersonStoryPage.php?pid=$row[id]\'>\" .$row[\'title\']. \" </a>\";
至
echo \"<a href = \'PersonStoryPage.php?pid=\".$row[\'id\'].\"\'>\" .$row[\'title\']. \" </a>\";
, 您的查询有误。您缺少双引号新杰米
尝试这个
$ query = \'SELECT * FROM person_stories其中person = \“ jamie \” \';