php - 我如何将这个巨大的分割查询变成一个查询

标签 php mysql

我在一个页面中从不同的表中获取不同的查询。我想减少数据库跳闸。

这是我的代码..

$query = "SELECT COUNT(*) as cnt_news FROM news";
$result = mysql_query($query);
$row = mysql_fetch_array($result);


$query = "SELECT COUNT(*) as cnt_adv FROM advertisements";
$result = mysql_query($query);
$row = mysql_fetch_array($result);

$query = "SELECT COUNT(*) as cnt_comm FROM comments";
$result = mysql_query($query);
$row = mysql_fetch_array($result);


$query = "SELECT SUM(CASE WHEN c.approve = '1' AND c.spam = '0' THEN 1 ELSE 0 END) AS cnt_approved,
          SUM(CASE WHEN c.approve = '0' AND c.spam = '0' THEN 1 ELSE 0 END) AS cnt_unapproved,
          SUM(CASE WHEN c.spam = '1' THEN 1 ELSE 0 END) AS cnt_spam
          FROM COMMENTS c";
$result = mysql_query($query);
$row = mysql_fetch_array($result);


$query = "SELECT SUM(a.amount) as t_amnt,
          SUM(a.cashpaid) as t_cpaid,
          SUM(a.balance) as t_bal
          FROM advertisements a";
$result = mysql_query($query);
$row = mysql_fetch_array($result);

我对如何进行查询以从三个不同的表(新闻、广告和评论)中选择值感到困惑。如何减少我的代码和数据库行程?

谢谢。

最佳答案

您不必减少数据库访问,但可以使用函数来减少代码

制作通用函数会更好。

<?php
$num_news = dbgetvar("SELECT COUNT(*) FROM news");
$num_adv  = dbgetvar("SELECT COUNT(*) FROM advertisements");
$num_comm = dbgetvar("SELECT COUNT(*) FROM comments");

function dbgetvar($query){
  $res = mysql_query($query);
  if (!$res) {
    trigger_error("dbget: ".mysql_error()." in ".$query);
    return FALSE;
  }
  $row = mysql_fetch_row($res);
  if (!$row) return NULL;
  return $row[0];
}

始终从重复的代码中创建函数。

关于php - 我如何将这个巨大的分割查询变成一个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3698430/

相关文章:

javascript - 将所有 Ajax 代码放在一个 PHP 文件中是不是很糟糕?

mysql - 更新数据库 - FLEX

php - 将遗留 mySQL 数据库集成到新的 Django ORM 支持的数据结构中

php - mysql 替换文本

php - 使用 Kohana 从数据库中回显最后一条记录

php - 友好的 url 不聪明

php - 如何在 PHP 自定义 mysqli 函数中显示 SQL 错误?

mysql - 在 ubuntu 上使用 ansible 安装 MySQL

javascript - 如何将 ajax post 连接到 PHP 文件中的特定条件?

php - jQuery 循环上一个/下一个按钮图像