当数据库为空时,MySQL COUNT查询返回行

时间:2013-01-03 04:13:46

标签: mysql count

我这样做的方式是否有问题,因为我清空了数据库表以测试此代码,并为$ cc_rows返回值“1”...

$ccquerycount = "SELECT COUNT(*) FROM payments_cc_info WHERE user_id=$userid";
                $ccresult = mysql_query($ccquerycount) or die(mysql_error());
                $cc_rows = mysql_num_rows($ccresult);

                echo $cc_rows;

                if ($cc_rows > 0) {
                echo '<div class="message_success" align="center">Credit Card info on file.<br />Edit settings to change.</div>';
                } else {
                echo '<div class="message_error" align="center">No Credit Card info on file.<br />Edit settings to change.</div>';
                }

3 个答案:

答案 0 :(得分:3)

您将获得一行,包含一列,该列的值为零。

您需要执行SELECT * FROM payments_cc_info WHERE user_id=$userid并计算其中的行数,或者获取COUNT(*)的值并检查它。

答案 1 :(得分:0)

而不是countExists更快:)

您也可以尝试以下方法。

SELECT IF(EXISTS(SELECT * FROM payments_cc_info WHERE user_id=$userid),1,0) AS result

参考文章:Best way to test if a row exists in a MySQL table

答案 2 :(得分:0)

由于我们使用的是mysql_num_rows,它总是会返回带有count()查询的值“1”,但重要的是要注意的是1是查询返回的总行数而不是count的值()。

使用mysql_fetch_row可以解决问题。

$ccquerycount = "SELECT COUNT(*) FROM payments_cc_info WHERE user_id=$userid";
$ccresult = mysql_query($ccquerycount) or die(mysql_error());

$row = mysql_fetch_row($ccresult);
$cc_rows = $row[0];

mysql_close($con);

echo $cc_rows;

if ($cc_rows > 0) {
                echo '<div class="message_success" align="center">Credit Card info on file.<br />Edit settings to change.</div>';
                } else {
                echo '<div class="message_error" align="center">No Credit Card info on file.<br />Edit settings to change.</div>';
                }