我有两个表:
表 1:注释
表 2:联系人
我的基本目标是执行以下查询:
list * from contacts where(搜索文本存在于联系人中)或(搜索文本存在于该联系人的注释中)
我编写了以下代码来执行此操作:
<?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)。例如,当我给出搜索参数时,它显示以下输出nawaz
:
4001
4001
4001
4001
4001
4002
4003
感谢您的帮助,请帮我解决这个问题。