6

私はmysqli拡張機能を理解しようとしており、グーグルで検索しましたが、php.netを除いてこれに関する情報はほとんどありませんでした。

今、私は次のようなmysql拡張機能でできることを達成しようとしています:

// MYSQL STYLE OF fetching array, query limit and perform total row count all at once

$sql = "SELECT SQL_CALC_FOUND_ROWS *, post.id as pid, bla bla FROM account ORDER BY pid ASC". $eb["array"]['querylimit'];

$result = mysql_query($sql, $eb["con"]);
$TotalRcount = mysql_fetch_row(mysql_query("SELECT FOUND_ROWS()"));

// Performing record count [current]
// $RecordCount = mysql_num_rows($result);

while($row = mysql_fetch_array($result)){
    // read columns
}

mysqliでこれを達成するにはどうすればよいですか? 私は多くのことを見逃していると確信しています。私の目標を達成する方法の例を教えてください。

4

3 に答える 3

6

これを試すことができます:

//Establish connection using mysqli api
$conn = mysqli_connect('hostname', 'username', 'password', 'database_name');

$sql = "SELECT SQL_CALC_FOUND_ROWS *, post.id as pid, bla bla FROM account ORDER BY pid ASC". $eb["array"]['querylimit'];

$sql2 = "SELECT FOUND_ROWS()";

$result1 = $conn->query($sql);
$result2 = $conn->query($sql2);
$TotalRcount = $result2->fetch_row();

// Performing record count [current]
// $RecordCount = $result->num_rows();

while($row = $result->fetch_array(MYSQLI_BOTH)){
    // read columns
}

while ループでは MYSQLI_BOTH 定数を使用しましたが、必要に応じて MYSQLI_NUM または MYSQLI_ASSOC に変更できます。

于 2013-02-04T12:05:40.710 に答える
1

SQL_CALC_FOUND_ROWS は通常、LIMIT 句を含む SELECT ステートメントで使用されます。

MySQL マニュアルから ( https://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows ):

SELECT ステートメントには、サーバーがクライアントに返す行数を制限する LIMIT 句を含めることができます。場合によっては、ステートメントを再実行せずに、LIMIT なしでステートメントが返す行数を知ることが望ましい場合があります。この行数を取得するには、SELECT ステートメントに SQL_CALC_FOUND_ROWS オプションを含め、後で FOUND_ROWS() を呼び出します。

上記の例では、結果の数を抑えるために LIMIT を使用していないため、FOUND_ROWS() を使用しても、データベースへの余分なコールバックが発生するだけです。返される行数を取得する方法については、こちらの他の回答をご覧ください。幸運を。

于 2015-05-26T16:13:56.653 に答える
0

mysqli を使用すると、次のように実行できます (mysqli オブジェクトが既に作成されていると仮定します。わずかに異なるプロシージャ メソッドを使用することもできます)。

$sql = "SELECT SQL_CALC_FOUND_ROWS *, post.id as pid, bla bla 
        FROM account ORDER BY pid ASC". $eb["array"]['querylimit'];
$result = $mysqli->query($sql);
$TotalRcount = $result->num_rows;
while($row=$result->fetch_assoc()){
    $col1 = $row['col1'];  // col1 is a placeholder for whatever column you are reading
    //read columns
}
于 2013-02-04T07:54:35.640 に答える