0

プリペアドステートメントを使用して、クエリからの戻り行をカウントしようとしました。

このようなもの :

$q = "SELECT name, address, contact FROM members"; 

    $stmt = mysqli_prepare ($dbc, $q);

    mysqli_stmt_store_result($stmt);
    // Get the number of rows returned: 
    $rows = mysqli_stmt_num_rows($stmt);

    echo $rows;

しかし、このクエリを実行すると、常に0行が取得されます。mysql client antを使用してテストしたところ、6行が返されました。

誰かがこれの何が問題なのか教えてもらえますか?

ありがとうございました。

4

4 に答える 4

4

mysqli_stmt_execute結果を保存する前に、実際に結果セットを取得するために呼び出す必要があります。

$stmt = mysqli_prepare ($dbc, $q); 
mysqli_stmt_execute($stmt); // <--------- currently missing!!!
mysqli_stmt_store_result($stmt); 
$rows = mysqli_stmt_num_rows($stmt);
于 2013-02-23T14:14:55.633 に答える
3

クエリを実行する必要があります

 $q = "SELECT name, address, contact FROM members"; 

if ($stmt = mysqli_prepare ($dbc, $q)) {

 mysqli_stmt_execute($stmt);

 mysqli_stmt_store_result($stmt);
 // Get the number of rows returned: 
 $rows = mysqli_stmt_num_rows($stmt);

 echo $rows;  

 mysqli_stmt_free_result($stmt);

 mysqli_stmt_close($stmt);
 }
于 2013-02-23T14:16:44.680 に答える
1

ステートメントハンドルでexecute()を呼び出す必要があります。現在は、クエリを準備しているだけです。

$q = "SELECT name, address, contact FROM members"; 

    $stmt = mysqli_prepare ($dbc, $q);

    mysqli_stmt_execute($stmt);

    mysqli_stmt_store_result($stmt);
    // Get the number of rows returned: 
    $rows = mysqli_stmt_num_rows($stmt);

    echo $rows;
于 2013-02-23T14:16:48.343 に答える