Php 访问mysql数据库的最有效方法是为网站提取多个数据

Php 访问mysql数据库的最有效方法是为网站提取多个数据,php,mysql,Php,Mysql,我正在运行一个分类广告页面,我正在使用mysql和php。 作为简化形式,我的ads表如下所示: ad id -> int ad title -> text ad description -> text ad description -> text ad type -> boolean (if 0 is a private add, if is 1 is abusiness ad) ad op -> boolean if zero is a used i

我正在运行一个分类广告页面,我正在使用mysql和php。 作为简化形式,我的ads表如下所示:

ad id -> int
ad title -> text
ad description  -> text
ad description  -> text
ad type -> boolean (if 0 is a private add, if is 1 is abusiness ad)
ad op -> boolean  if zero is a used item if 1 is a new item)
我要做的是获得私人和公共广告的数量 在不调用4次数据库的情况下,使用的和新的项目的数量是否可能

现在我打了5个电话,因为我每页显示20个广告 我对数据库的调用是:

  • 使用select*表格获取20个广告的数据。。。。。限制1,20
  • 使用num_行计算私有添加的数量
  • 使用num_行统计业务添加的数量
  • 使用num_行统计使用的添加的数量
  • 使用num_行统计新添加的数量
    是否有一些方法可以执行相同的操作,但对数据库的调用较少?

    您可以使用以下方法将最后4个点合并到一个查询中:

    备用方法正在使用以下功能:


    请注意类型是a,因此我们需要在其周围使用倒勾(`)。

    要获取私人和商业广告的总数以及新的和使用过的项目广告的总数,请通过编辑将所有相关信息添加到问题中,而不是添加到您所说的评论部分,这是最好的选择,将使用一个缓存系统,在数据库中有新数据时进行刷新,从而避免在数据更新/添加之前对数据库进行任何新的查询。谢谢,但我发现这个错误**您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,了解使用near'type=0,id,NULL)作为private_ads_count的正确语法,***@AnaPaulaGomesPaula type是保留关键字。编辑我的答案。我们需要使用反勾号。@AnaPaulaGomesPaula请立即使用编辑过的答案。我发现它在if COUNT(if(type=0,id,NULL))上缺少的问题()如果您不想在php
    $COUNT=$result->fetch_array(MYSQLI_ASSOC)上获取值,它会有所帮助;echo$count['business_ads_count']
    
    SELECT 
      COUNT(IF (`type` = 0, id, NULL)) AS private_ads_count, 
      COUNT(IF (`type` = 1, id, NULL)) AS business_ads_count, 
      COUNT(IF (`op` = 0, id, NULL)) AS used_ads_count, 
      COUNT(IF (`op` = 1, id, NULL)) AS new_ads_count
    FROM ads_table
    
    SELECT 
      SUM(IF (`type` = 0, 1, 0)) AS private_ads_count, 
      SUM(IF (`type` = 1, 1, 0)) AS business_ads_count, 
      SUM(IF (`op` = 0, 1, 0)) AS used_ads_count, 
      SUM(IF (`op` = 1, 1, 0)) AS new_ads_count
    FROM ads_table