1

次のPHPコードがあります。

$sql   = new mysqli(/*connection info/db*/);
$query = $sql->$query("SELECT * from users WHERE /* rest of code */);

上記のクエリで見つかった行の量を取得できる方法があるかどうか疑問に思っていました...

4

3 に答える 3

2

PDO の使用を検討する必要があります。より安全で、よりオブジェクト指向のアプローチです。

$database = new PDO(/*connection info/db*/);

$statement = $database->prepare('SELECT FROM fruit WHERE fruit_id = ? AND name = ?');
$statement->bindValue( 1, 'fruit_id_value' );
$statement->bindValue( 2, 'Banana' );
$statement->execute();

$count = $statement->rowCount(); # <-- The row count you are looking for!

-->詳細については、 http://php.net/manual/en/pdostatement.rowcount.phpをご覧ください。

于 2013-03-03T18:53:43.620 に答える
0

必要なカウントの情報を保持する SELECT クエリの修飾子があります: SQL_CALC_FOUND_ROWS

SELECT SQL_CALC_FOUND_ROWS  * from users WHERE /* rest of code */

そのクエリを実行した後、SELECT FOUND_ROWS(); を実行できます。結果の行数を取得します。

必要なのはカウントだけの場合は、次のことができます

SELECT count(*) from users WHERE /* rest of code */
于 2013-03-03T19:02:09.137 に答える
0

Mysqliでは、あなたができることを知っています

printf("Number of rows: %d.\n", $sql->num_rows);

ここにすべてのコードがあります

<?php
/* Open a connection */
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if ($stmt = $mysqli->prepare($query)) {

    /* execute query */
    $stmt->execute();

    /* store result */
    $stmt->store_result();

    printf("Number of rows: %d.\n", $stmt->num_rows);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

私はこのPHPマニュアルからそれを得ましたhttp://php.net/manual/en/mysqli-stmt.num-rows.php

于 2013-03-03T18:44:30.420 に答える