通过以下代码,我可以使用 FQL 获取我在 Facebook 上管理的所有页面。不过我不会打印它们。
$PageNames = $facebook->api('/fql', array('q' =>
'SELECT name, page_id FROM page WHERE page_id IN (
SELECT page_id FROM page_admin WHERE uid=me() )'));
之前,我已在数据库中添加了一些页面的 *page_id*。我的目标是显示尚未添加到数据库的页面。它工作正常,代码如下。
foreach($PageNames['data'] as $PageName) {
$investigate_id = mysql_query("SELECT page_id FROM pages WHERE page_id='"
.$PageName['page_id']."' LIMIT 1 ");
if(mysql_num_rows($investigate_id) == 0) {
echo $PageName['page_id'].$PageName['name'];
}
}
我的问题是我是否可以避免大量的数据库调用,因为它会对我管理的每个页面进行查询。我怎样才能实现这个目标?
最佳答案
<?php
$IDs = array();
foreach($PageNames['data'] as $PageName){
$IDs[] = $PageName['page_id'];
}
$investigate_id = mysql_query('SELECT page_id FROM pages WHERE page_id IN (\''.implode('\', \'', $IDs)).' LIMIT 1 ');
while($assoc = mysql_fetch_assoc($investigate_id)){
// iff
}
?>
使用 WHERE col IN 会进行一次查询,因此所有 ID 都会如此
WHERE page_id IN (1,3,45,6,7,6,7,5,2,1,5,76) 它将在查询中执行此操作,只需在结果之后进行循环并执行任何操作你想要!
关于php - 如何避免对我的数据库的大量调用? (MySQL + PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9880307/