0

カスタム データベースの作成方法に関するYouTube ビデオを見ました。これを自分のサイトに実装しようとしました。しかし、明らかに、それは機能していません...

「Query failed:」というエラーが表示され、次のコードからは何も表示されません。

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect to database"); 
mysql_select_db("$db_name")or die("cannot select DB");
$con=mysqli_connect("$host","$username","$password","$db_name");

$terms = explode(" ", $search);
$query = "SELECT * FROM search WHERE ";

foreach ($terms as $each){
$i++;
if ($i == 1)
  $query .= "keywords LIKE '%each%' ";
else
   $query .= "OR keywords LIKE '%each%' ";
}

$query = mysql_query($query);
$numrows = mysql_num_rows($query) or die('Query failed: ' . mysql_error() . "<br   />\n$sql"); 

if ($numrows > 0)
   while($row = mysqlfetch_ASSOC($query)){
   $id = $row['id'];
   $title = $row['title'];
   $description= $row['description'];
   $keywords = $row['keywords'];
   $link = $row['link'];

   echo '<h2><a href="$link">$title</a><h2>
   $description<br/><br/>';
   }
else 

   echo "No results found";

   //disconnect
   mysql_close();

?>

正直なところ、私はそれの約70%しか理解しておらず、わかりません. データベースは正しく接続され、機能しています。私は何を間違っていますか???

mysql_num_rows は以前に問題を引き起こしていましたが、WHERE'' と終了引用符の間にスペースを入れた後、ここに残されました。

4

2 に答える 2

1

これが問題かどうかはわかりませんが、次のことはすべきではありません。

$query .= "keywords LIKE '%each%' ";

代わりにこれになります:

$query .= "keywords LIKE '%{$each}%' ";

ループ内の文字列としてではなく、それぞれをテキストとして扱っています。

(2行下も同様)

于 2013-06-08T03:27:42.273 に答える
0

最初に....変数を含めるには $each を含める必要があります...それぞれだけではありません...

$query .= "WHERE keywords LIKE '%{$each}%' ";

また....キーワードの前にWHEREを移動して、ユーザーが検索に何も入力しない場合...すべてを照会するようにします...そうしないと、何も入力しないと壊れます...

 $terms = explode(" ", $search);
 $query = "SELECT * FROM search ";

  if(!empty($terms)){

  foreach ($terms as $each){
   $i++;
     if ($i == 1)
        $query .= "WHERE keywords LIKE '%{$each}%' ";
      else
        $query .= "OR keywords LIKE '%{$each}%' ";
      }
  }
于 2013-06-08T03:33:36.783 に答える