0

num_rowsが0として戻ってきて、いくつかの方法で呼び出しようとしましたが、行き詰まりました。これが私のコードです:

    $conn = new mysqli($dbserver, "dbuser", "dbpass", $dbname);

    // get the data 
    $sql = 'SELECT AT.activityName, AT.createdOn
            FROM userActivity UA, users U, activityType AT  
            WHERE U.userId = UA.userId
            and AT.activityType = UA.activityType
            and U.username = ?
            order by AT.createdOn';             
    $stmt = $conn->stmt_init();
    $stmt->prepare($sql);
    $stmt->bind_param('s', $requestedUsername);
    $stmt->bind_result($activityName, $createdOn);
    $stmt->execute();

    // display the data
    $numrows = $stmt->num_rows;
    $result=array("user activity report for:  " . $requestedUsername . " with " . $numrows . " rows:");
    $result[]="Created On --- Activity Name";
    while ($stmt->fetch())
    {
        $msg = " " . $createdOn . " --- " . $activityName . " ";
        $result[] = $msg;
    }

    $stmt->close();

複数の行が見つかり、フェッチループはそれらを適切に処理します。クエリで返される行数を取得できるようにするための提案はありますか?

提案は大歓迎です。前もって感謝します。

4

4 に答える 4

2

$stmt->store_result()の直前に、最初に電話する必要があります$stmt->num_rows

于 2012-04-13T23:30:27.247 に答える
1

num_rows;を呼び出す前に、これを追加してみてください。

$stmt->store_result();

于 2012-04-13T23:27:36.060 に答える
0

これで問題が解決するかどうかはわかりませんが、私が間違っていなければ、クエリを実行するまで解決bind_resultsできません。execute

また、whileループ:

while ($stmt->fetch())
 {
     $msg = " " . $createdOn . " --- " . $activityName . " ";
     $result[] = $msg;
 }

配列を作成する$msg必要があるため、最後の設定を除いて、ループを繰り返すたびにすべての変数が失われます。$msg .=$msg$msg[] =

于 2012-04-13T23:31:18.477 に答える
0
$stmt->store_result();
$numrows = $stmt->num_rows;

これを確認してください:http://php.net/manual/en/mysqli-result.num-rows.phpおよびこの http://php.net/manual/en/mysqli-stmt.num-rows.php

于 2012-04-13T23:35:06.943 に答える