当使用PHP变量打印来自SELECT FROM WHERE的结果时出错

问题描述

|
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 \” \';