1

Web サイトで MySQL キーワード検索を行っていますが、問題なく動作します。問題は、誰かが私が追加していないキーワードを検索しても、結果ページに何も表示されないことです。

何も表示されない代わりに、no results foundメッセージが欲しいです。

そこで、以下のコードを使用しました。

if (mysql_num_rows($Recordset1) > 0) {
    // no results
    echo 'No results found.';
} else {
    do {
    // output
    } while($res = mysql_fetch_assoc($Recordset1));
}

no results found問題は、データベースにあることを知っているキーワードを検索するたびに、メッセージとともに結果が得られることです。(このno results foundメッセージは、Web ページの左上にも表示され、Web サイト全体が押し下げられます。)

そして、データベースにないことがわかっているキーワードを検索したとき、メッセージがまったく表示されず、以前のように何も表示されませんでした。

大なり小なり等号をいじってみたところ、同様の問題が発生しました。私の論理が逆だと言われたのですが、どのように見えるべきかわかりません。

事前に感謝します。

4

4 に答える 4

1

ループに入る前に行フェッチを実行しない限り、{}whileループはデータベースフェッチには適していません。出力セクションの最初の反復では、データベースからフェッチされた結果がないため、基本的に何も出力されません。

mysql_num_rows()は、結果がない場合は0を返すため、実際には行がないのに行がないと言って、実際には論理を反転しています。結果が1行でも> 0、trueが返され、「結果なし」が出力されます。

于 2012-01-03T02:41:37.980 に答える
1
if (mysql_num_rows($Recordset1) == 0) {
// no results
echo 'No results found.';
} else {
while($res = mysql_fetch_assoc($Recordset1)) {
// output
}
}

それを試してみてください...

1.) 結果がない場合、mysql_num_rows は 0 になります 2.) 出力を取得する前に、それを使用した後ではなく、変数にフェッチする必要があります

于 2012-01-03T02:57:16.757 に答える
0
if (mysql_num_rows($Recordset1) == 0) {
 . . .
于 2012-01-03T02:40:32.720 に答える
0

if条件をに変更します

if (mysql_num_rows($Recordset1) == 0) {

使用する場合は、「結果がない> 0」ではなく「結果がある」ことを意味します。

于 2012-01-03T02:42:28.277 に答える