0

我正在尝试制作一个搜索程序。我有三个表postivewordsnegativewordsrecommendationwords。这些表仅由 word_id 和单词组成。我如何在查询中做到这一点?这就是我到目前为止所拥有的。如果我错了,请纠正我。

if(isset($_POST['searchword']))    
{        
    $word = $_POST['search'];            
    $search1= mysql_fetch_array(mysql_query("SELECT * FROM positivethesaurus where word like '%$word%'"));
    $search2= mysql_fetch_array(mysql_query("SELECT * FROM negativethesaurus where word like '%$word%'"));    
    $search3= mysql_fetch_array(mysql_query("SELECT * FROM recommendationthesaurus where word like '%$word%'"));
}
4

4 回答 4

1
select * from negativethesaurus, positivethesaurus,recomendationthesaurus where negativethesaurus.word like '%"word%' or positivethesaurus.word like '%word%' or recomendationthesaurus.word like '%word%';

这可能不是最快的方法(您将使用索引和自由文本),但它只会在一个查询上失败。

哦,是的,据说这个查询容易受到 sql 注入攻击。

于 2013-02-27T12:17:30.047 回答
0

也做 mysql_escape_string 以避免sql注入

  $word = $_POST['search'];
  $word = mysql_escape_string($word);
于 2013-02-27T12:18:54.193 回答
0
$query = SELECT positivethesaurus .*,negativethesaurus.*,recommendationthesaurus.*   FROM positivethesaurus,negativethesaurus,recommendationthesaurus where positivethesaurus.word like '%$word%' OR negativethesaurus.word like '%$word%' OR recommendationthesaurus.word like '%$word%'";

更新 如果你想检查是否没有找到结果然后这样做

<?php
 $query = mysql_query("Your Query Here");
 $rowCount = mysql_num_rows($query);
 if($rowCount>0) {
   // DO YOur STUFF IF RESULTS FOUND
 } else {
  echo "No Results Found";
 }
?>

请注意不要使用 mysql_* 函数

希望这有效。虽然没有测试。如果您发现任何问题,请告诉我

于 2013-02-27T12:18:45.173 回答
-1

1) 选择尊重的列而不是 select * from 2) 避免 sql 注入

于 2013-02-27T12:20:13.050 回答