我有一个表跟踪每个用户点击的链接,并且我有另一个包含链接的表。这里是每个表结构:从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周内活动的微型网站。 –