0

我这样做的方式有什么问题吗,因为我清空了数据库表来测试这段代码,它为 $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>';
                }
4

3 回答 3

3

您将得到一行,一列,该列的值为零。

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

于 2013-01-03T04:15:17.673 回答
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>';
                }
于 2013-01-03T04:28:01.940 回答
0

Insted of count,Exists更快:)

您也可以尝试以下方法。

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

参考帖子:测试 MySQL 表中是否存在行的最佳方法

于 2013-01-03T04:25:47.437 回答