我有一個表跟蹤每個用戶點擊的鏈接,並且我有另一個包含鏈接的表。這裏是每個表結構:從PHP和MySQL中的另一個表中排除項目
鏈接: ID |鏈接|值| date_added
點擊: user_id | link_id | date_clicked
現在這是我正在使用的代碼來使我的搜索發生,它的工作原理,我只想知道是否有一個更有效的方式做到這一點,因爲點擊鏈接表會變得非常大非常快。
$history_query = mysql_query("SELECT * FROM clicked_links WHERE user_id = '$id'") or die(mysql_error());
$history_array = array();
while ($h = mysql_fetch_array($history_query)) {
$history_array[] = $h['link_id'];
}
$clicked = implode(',', $history_array);
$link_query = mysql_query("SELECT * FROM chip_links WHERE id NOT IN ($clicked) ORDER BY value DESC") or die(mysql_error());
while ($r = mysql_fetch_array($link_query)) {
echo "<div id='claim{$r['id']}' style='text-align: center; font-weight: bold; font-size: 18px; float: left; width: 183px;'>
<a href='{$r['link']}' id='{$r['id']}' class='collect' target='_blank'>
Claim {$r['value']} points!
</a>
</div>";
}
嘗試使用'NOT EXISTS' – Kermit
[**請勿在新代碼**中使用'mysql_ *'函數](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –
謝謝你的教程鏈接。我一直想要改變方向,但我的辦公室裏已經有了一個完整的盤子,很少有時間學習。這實際上是我在學習新功能之前用舊功能進行抽取的最後一個網站,因爲它是一個僅在2周內活動的微型網站。 –