私は2つのテーブルを持っています:
表1:メモ
表2:連絡先
私の基本的な目的は、次のクエリを実行することです。
リスト*(検索テキストが連絡先に存在する)または(検索テキストがその連絡先のメモに存在する)連絡先から
私はこれを行うために次のコードを書きました:
<?php
require_once('config.php');
$nwhere = "WHERE note_text LIKE '%".addslashes($_GET['s'])."%' ";
$cwhere = "contact_text LIKE '%".addslashes($_GET['s'])."%' ";
$result = mysql_query("SELECT * FROM contacts INNER JOIN notes ON contact_id = note_contact $nwhere OR $cwhere ORDER BY contact_id");
while($row = mysql_fetch_array($result))
{
echo $row['contact_id'];
echo '<br/>';
}
?>
Search Textがazeem
の場合、上記のコードは印刷されるだけです4001
が、出力は次のようになります
。4000
4001
また、私contact_id
は出力で繰り返したくありません。
提案してください。
Fluffeh
による修正後のコード:
$where_clause = " where contacts.contact_text like '%".addslashes($_GET['s'])."%' or notes.note_text like '%".addslashes($_GET['s'])."%'";
$result = mysql_query("select notes.note_id, notes.note_contact, contacts.contact_id, contacts.contact_text, notes.note_text from contacts left outer join notes on contacts.contact_id=notes.note_contact $where_clause");
while($row = mysql_fetch_array($result))
{
echo $row['contact_id'];
echo '<br/>';
}
?>
このコードはテーブルから正しい行を取得しますが、出力(contact_id)を繰り返すという小さな問題が1つあります。たとえば、検索パラメータを指定すると、次の出力が表示されますnawaz
:
4001
4001
4001
4001
4001
4002
4003
あなたの助けをありがとう、これを修正するために私を助けてください。