2013-11-04 37 views
-1

我试着用倍数参数,以获得使用SELECT COUNT(*)的行数,它编码的JSON格式的数字,但我得到这个:如何计算行用SELECT COUNT(*)

{"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); 

包括类d的一部分B:

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} 

谢谢。

回答

0

您的MySQL API返回所有行的数组,每行都是一个关联数组,其关键字是SELECT子句中的标签。你需要从阵列中提取值:

$t["notification"] = $query[0]['count(*)']; 
$t["message"] = $query_2[0]['count(*)']; 
+0

谢谢求助 !它工作完美! –

1

修改您的SQL查询来开始:

SELECT count(*) AS cnt FROM 

然后取出从查询中值,例如:

$t["notification"] = $query[0]["cnt"]; 
$t["message"] = $query2[0]["cnt"];