我这样做的方式是否有问题,因为我清空了数据库表以测试此代码,并为$ 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>';
}
答案 0 :(得分:3)
您将获得一行,包含一列,该列的值为零。
您需要执行SELECT * FROM payments_cc_info WHERE user_id=$userid
并计算其中的行数,或者获取COUNT(*)
的值并检查它。
答案 1 :(得分:0)
而不是count
,Exists
更快:)
您也可以尝试以下方法。
SELECT IF(EXISTS(SELECT * FROM payments_cc_info WHERE user_id=$userid),1,0) AS result
答案 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>';
}