3

おそらく愚かな質問です。次のコードがあります。

while ($stmt -> fetch()) {
    echo "<p><strong>" .$name. "</strong><br />" .$comment. "</p>";
}

$stmt -> fetch() が少なくとも 1 つの行を返す場合にのみ while を実行したいと思います (これは SELECT クエリです)。

if ($stmt -> fetch())

すでに一度実行されているので、これを避けたいです。どんな手掛かり?

前もって感謝します。

4

4 に答える 4

8

http://php.net/manual/en/mysqli-stmt.num-rows.php

使ってみて$stmt->num_rows > 0

$stmt->store_result();
if( $stmt->num_rows > 0 )
{
    while( $stmt->fetch() ) {
        echo "<p><strong>" .$name. "</strong><br />" .$comment. "</p>";
    }
}

なぜ関数mysqli_resultがあり、そうでないのですか....私にはわかりません。fetchAllmysqli_stmt


長くなりますが、うまくいくかもしれません

$result = $stmt->fetch();
if( !empty( $result )
{
    do
    {
        echo "<p><strong>" .$name. "</strong><br />" .$comment. "</p>";
    } while( $result = $stmt->fetch() ); 
}
于 2013-01-15T21:46:08.327 に答える
2

カウントを取得するには、少なくとも 1 回はデータベースにクエリを実行する必要があると思います。

于 2013-01-15T21:49:52.063 に答える
0

電話することで

while( $stmt->fetch() ) {
    // do stuff
}

すでに正しいチェックを行っていますが、do stuff結果が複数ある場合にのみパーツが発生します。だから、あなたはすでにあなたがする必要があるすべてのことをしています.

つまり、発生するのは0 より大きい場合echoのみです。numRows

于 2013-01-15T21:53:24.943 に答える
-2

rowCount()DELETE、INSERT、または UPDATE ステートメントによって影響を受けた行の数を返します。

<?php
/* Delete all rows from the FRUIT table */
$stmt= $dbh->prepare('DELETE FROM fruit');
$stmt->execute();

/* Return number of rows that were deleted */
$count = $stmt->rowCount();
print("Deleted $count rows.\n");
?>

上記の例では、次のように出力されます。

   Deleted 9 rows.
于 2016-09-20T08:08:22.320 に答える