0

私は以下のコードを持っています、そしてそれはうまくいきます。ただし、検索できるのは2行のみです。さらに2行(合計4行)を検索したい。私はいくつかのテクニックを試しましたが、うまくいきませんでした。結果が重複することがあります。

<?php

$term = $_POST['term'];

$connect = new mysqli("localhost", "root", "hala3ammi", "phprealty");

$sql = "
 SELECT phprealty_property.*, phprealty_prop_img.p_id, phprealty_prop_img.fn
 FROM phprealty_property
 INNER JOIN phprealty_prop_img
 ON phprealty_property.id = phprealty_prop_img.p_id 
 WHERE phprealty_prop_img.def='1' 
 AND (phprealty_property.title like '%$term%'
 OR phprealty_property.full_desc like '%$term%')";

$query = mysqli_query($connect, $sql) or die (mysqli_error());

$result = mysqli_query($connect, $sql);

$found = mysqli_num_rows($result);

echo '<br/> Search result(s): '.$found;

while ($row = mysqli_fetch_array($result)){
$img = $row["fn"];
$thumb = 'th_' . $img;
$duh = '<img src="../falcon/listImgs/' . $thumb . '" />';
echo '<br/> Title: '.$row['title'];
echo '<br/> Price: '.$row['price'];
echo '<br/> Type: '.$row['type'];
echo '<br/> Image: '.$duh;
echo '<br/> Full Desc: '.$row['full_desc'];
echo '<br/><br/>';
}
?>

データベース:

phprealty

検索したいテーブル:

phprealty_property

INNER結合は、以下の表からデフォルトのサムネイルを取得するためのものです。

phprealty_prop_img

WHERE phprealty_prop_img.def='1'

前もって感謝します。

4

1 に答える 1

1

重複しているように見える結果が得られる理由は、内部結合にあると思います。phprealty_propertyの単一のプロパティリストに対応するphprealty_prop_imgにn行がある場合(つまり、同じ値p_idを持つphprealty_prop_imgにn行)、クエリによってn行が返され、それぞれがphprealty_propertyから取得された同一の情報を持ちます。 phprealty_prop_img.fnで変化します。W3Cサイトhttp://www.w3schools.com/sql/sql_join_inner.aspにある内部結合の例を見てみましょう。

phprealty_property.cityとphprealty_property.short_descで検索する場合、問題がわかりません。これの最後にあるOR句にこれらを追加できないのはなぜですか?

AND (phprealty_property.title like '%$term%' 
      OR phprealty_property.full_desc like '%$term%' 
      OR phprealty_property.city LIKE '%$city%'
      OR phprealty_property.short_desc LIKE '%$term%')
于 2012-11-17T11:00:24.527 に答える