Php 如何使用select count(*)计算行数
我尝试使用带有多个参数的select count(*)获取行数,并将其编码为JSON格式,但我得到了以下结果:Php 如何使用select count(*)计算行数,php,mysql,json,pdo,Php,Mysql,Json,Pdo,我尝试使用带有多个参数的select count(*)获取行数,并将其编码为JSON格式,但我得到了以下结果: {"notification":[{"count(*)":0}],"message":[{"count(*)":0}]} 除此之外: {"notification":0,"message":0} 此处有页面的代码: session_start(); require_once __DIR__ . '/mysql/Db.class.php'; $bdd = new Db(); $t =
{"notification":[{"count(*)":0}],"message":[{"count(*)":0}]}
除此之外:
{"notification":0,"message":0}
此处有页面的代码:
session_start();
require_once __DIR__ . '/mysql/Db.class.php';
$bdd = new Db();
$t = array();
$query = $bdd->query("SELECT count(*) FROM notification WHERE id_proprio = :id_proprio AND readed = :readed", array("id_proprio"=> $_SESSION['userid'],"readed"=>"0"));
$query_2 = $bdd->query("SELECT count(*) FROM discussion WHERE id_1 = :uid AND readed = :readed AND notifPour = :uid2 OR id_2 = :uid3 AND readed = :readed2 AND notifPour = :uid4", array(
"uid"=> $_SESSION['userid'],
"readed"=>"0",
"uid2"=> $_SESSION['userid'],
"uid3"=> $_SESSION['userid'],
"readed2"=>"0",
"uid4"=> $_SESSION['userid']
));
$t["notification"] = $query;
$t["message"] = $query_2;
echo json_encode($t);
包括类Db的一部分:
public function query($query,$params = null,$fetchmode = PDO::FETCH_ASSOC)
{
$query = trim($query);
$this->Init($query,$params); // INIT IS THE CONNECTION TO DB
if (stripos($query, 'select') === 0) {
return $this->sQuery->fetchAll($fetchmode);
}
elseif (stripos($query, 'insert') === 0 || stripos($query, 'update') === 0 || stripos($query, 'delete') === 0) {
return $this->sQuery->rowCount();
} else {
return NULL;
}
}
如何获得以下例外结果格式:
{"notification":0,"message":0}
谢谢。您的MySQL API返回所有行的数组,每行都是一个关联数组,其键是
SELECT
子句中的标签。您需要从数组中提取值:
$t["notification"] = $query[0]['count(*)'];
$t["message"] = $query_2[0]['count(*)'];
修改SQL查询以开始:
SELECT count(*) AS cnt FROM
然后从查询中提取值,如下所示:
$t["notification"] = $query[0]["cnt"];
$t["message"] = $query2[0]["cnt"];