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

1 つの列を含む 1 つの行を取得し、その列の値は 0 です。

そこの行を実行してカウントするかSELECT * FROM payments_cc_info WHERE user_id=$userid、値をフェッチCOUNT(*)してそれに対してチェックする必要があります。

于 2013-01-03T04:15:17.673 に答える
0

の代わりにcountExistsより高速です:)

以下も試してみてください。

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

参考記事:行が MySQL テーブルに存在するかどうかをテストする最良の方法.

于 2013-01-03T04:25:47.437 に答える
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 に答える