【发布时间】:2011-07-14 18:27:31
【问题描述】:
由于我没有返回任何输出,这有什么问题吗?提前谢谢。
$question_text = $_POST['question_text'];
$first_word = explode(" ", $question_text);
$query ="SELECT c.field_name,t.category_name, d.domain_name FROM category_fields c, taxonomy_category t, taxonomy_domain d
WHERE c.category_Id = t.category_Id AND t.domain_Id = d.domain_Id
AND c.field_name = '$first_word'";
我已经把我的代码改成了这个,但仍然没有输出。我显示它们的方式有问题吗?谢谢
$question_text = $_POST['question_text'];
list($first_word) = explode(' ', $question_text);
$query ="SELECT c.field_name,t.category_name, d.domain_name FROM category_fields c, taxonomy_category t, taxonomy_domain d WHERE c.category_Id = t.category_Id AND t.domain_Id = d.domain_Id AND c.field_name = ' ".mysql_escape_string($first_word[0])."'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "关键字:{$row['c.field_name']}" 。 “类别:{$row['t.category_name']}”。 “域名:{$row['d.domain_name']}”; }
?>
【问题讨论】:
-
此代码易受SQL injection attack 的攻击。请不要将 POST 数据直接插入到查询中——做一些转义。您可以尝试检查 $first_word 的值是什么并针对您的数据库手动运行查询。
-
print_r是你的朋友。print_r($first_word);将指出它为什么不工作。此外,list($first_word) = explode(' ', $question_text);将生成的数组的第一个元素提取到$first_word。