php - 如何避免对我的数据库的大量调用? (MySQL + PHP)

标签 php mysql facebook facebook-fql

通过以下代码,我可以使用 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/

相关文章:

mysql - SQLSTATE[HY000] : General error: 2006 MySQL server has gone away magento

php - Facebook:连接到应用程序后获取用户拇指图像 URL

android - 登录错误 : there is an error in logging you into this application. 请稍后在 android 模块的 flutter 中重试

ios - Facebook auth.extendssoaccesstoken 错误代码 10

javascript - 如何在数据库php中保存动态下拉列表和文本框中的多个值

php - 函数开始时出现解析错误 : syntax error, 意外的 T_VARIABLE

php - 当实时生成网页时,它使用服务器端还是客户端的内存?

Mysql 排序依据与分组

mysql - COALESCE() 获取 Not null 以及 NULL 值

php - mySQL - 我应该更喜欢 REGEXP 以获得更快的搜索结果吗?