Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 计数(id)mysql-如果没有结果,是否显示0?_Php_Mysql - Fatal编程技术网

Php 计数(id)mysql-如果没有结果,是否显示0?

Php 计数(id)mysql-如果没有结果,是否显示0?,php,mysql,Php,Mysql,如果用户有新的聊天信息,我想计算(id) 我的问题是,如果没有消息,它不会给我0作为结果。 怎么了 $stmt = $mysqli->prepare("SELECT count(id) FROM chat WHERE `to`=? and recd='0' group by `from`"); $stmt->bind_param('s', $user); $stmt->execute(); $stmt->bind_result($chatcont); $stmt->

如果用户有新的聊天信息,我想计算(id)

我的问题是,如果没有消息,它不会给我0作为结果。 怎么了

$stmt = $mysqli->prepare("SELECT count(id) FROM chat WHERE `to`=? and recd='0' group by `from`");
$stmt->bind_param('s', $user);
$stmt->execute();
$stmt->bind_result($chatcont);
$stmt->fetch();
$stmt->close();
php:

如果我没有收到任何信息:

()

我想在其中显示0。

使用
$stmt->num_rows
返回结果中的行数。
如果该值为0,则
echo 0
否则
echo$chatcont

但您不需要在PDO语句中使用bind_result。请避免不必要的行为。 只需获取数据并在任何地方使用即可

$stmt = $mysqli->prepare("SELECT count(id) as count FROM chat WHERE `to`=? and recd='0' group by `from`");
$stmt->execute(array($user));
$chatcont = $stmt->fetch();

echo $chatcont['count'];

在这里,你将得到count或0,这是一个问题,如果放错了,会让人们到处写错误的答案

正确使用SQL,
count()
将始终返回一个数字

错误的是SQL。虽然被接受的答案基本上是错误的,永远不应该被使用,因为它是徒劳的

SELECT count(id) FROM chat WHERE `to`=? and recd='0'
是获取未读邮件数的正确答案。

获取发送者的数量是另一个问题。SQL也可以解决这个问题。如果有人问过


我相信由于
GROUP BY
命令,计数中的
NULL
输出将取代
0
。当输出中有
0行
时,GROUP BY命令无法对任何内容进行分组,从而生成空结构。哦,你说得对!分组是这里的问题。。。我应该改用num行吗?因为我需要按发件人统计邮件,而不是按邮件的实际数量…谢谢!正如Anshuman Chatterjee所说,计数中的问题是分组!我认为解决办法确实是数行。。。thanks@RickJoe对我来说,这似乎是唯一正确的答案。为什么需要使用分组方式?周围没有PDO
SELECT count(id) FROM chat WHERE `to`=? and recd='0'
SELECT count(distinct `from`) FROM chat WHERE `to`=? and recd='0'