这是否有任何问题,因为我没有返回输出?提前感谢。
$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']}”; }
>
答案 0 :(得分:1)
$ first_word是您想要的查询中的数组,而不是字符串 $ first_word [0]
将任何用户提交的值直接放入sql查询也是非常不安全的,应始终对其进行清理。
答案 1 :(得分:1)
而不是explode
行,您可以使用以下来获取正确的SQL查询:
$first_word = mysql_real_escape_string(strtok($question_text, " "));
字符串的strtok
剪切直到第一个空格。并且必须使用转义函数来防止脚本受到SQL攻击。
答案 2 :(得分:0)
list($first_word) = explode(' ', $question_text);
这应该可以解决问题。 清理数据库输入!
答案 3 :(得分:0)
$first_word = explode(" ", $question_text);
之后
$first_word
是一个数组,因为explode
返回数组
因此
$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'";
应该是
$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])."'";
阅读http://php.net/manual/en/function.mysql-escape-string.php了解mysql_escape_string
的内容。