0

検索プログラムを作ろうとしています。postivewordsnegativewordsおよびの 3 つのテーブルがありrecommendationwordsます。これらのテーブルは、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%';

これは最速の方法ではないかもしれませんが (インデックスとフリーテキストを使用します)、1 つのクエリだけでダウンします。

そうそう、このクエリは sql インジェクション攻撃に対して脆弱であると言われています。

于 2013-02-27T12:17:30.047 に答える
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 に答える
0

また、SQLインジェクションを回避するためにmysql_escape_stringを実行します

  $word = $_POST['search'];
  $word = mysql_escape_string($word);
于 2013-02-27T12:18:54.193 に答える
-1

1) select * from の代わりに尊重された列を選択する 2) SQL インジェクションを避ける

于 2013-02-27T12:20:13.050 に答える