現在の位置: ホーム> 最新記事一覧> stmt_init num_rowsまたはriffected_rowsを使用して結果を得る方法

stmt_init num_rowsまたはriffected_rowsを使用して結果を得る方法

M66 2025-05-29

データベース操作にPHPのMySQLI拡張機能を使用する場合、 MySQLI :: STMT_INIT()は重要な方法であり、ステートメントオブジェクト( MySQLI_STMT )の初期化に使用され、SQLステートメントを実行する準備をします。クエリステートメントが返されたかどうか、または影響を受ける行の数を判断するには、 num_rows選択したステートメントに)または影響を受けた_rows(挿入更新削除の場合)を使用します。

この記事では、例を使用して、 mysqli :: stmt_init()の使用方法を説明し、 num_rowsriffected_rowsを組み合わせてクエリ結果の影響を取得します。

1。準備:データベース接続

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

// 接続を確認してください
if ($mysqli->connect_error) {
    die("接続に失敗しました: " . $mysqli->connect_error);
}
?>

2。stmt_initを使用してステートメントを初期化し、クエリの準備をします

$stmt = $mysqli->stmt_init();

$sql = "SELECT id, name FROM users WHERE status = ?";
if ($stmt->prepare($sql)) {
    $status = 'active';
    $stmt->bind_param("s", $status);
    $stmt->execute();

    $stmt->store_result(); // このステップは必須です,さもないと num_rows 常に戻ります 0
    echo "返された行の数:" . $stmt->num_rows . "<br>";

    if ($stmt->num_rows > 0) {
        $stmt->bind_result($id, $name);
        while ($stmt->fetch()) {
            echo "ユーザーID: $id, 名前: $name<br>";
        }
    } else {
        echo "基準を満たす記録はありません。";
    }

    $stmt->close();
} else {
    echo "前処理に失敗しました:" . $stmt->error;
}

3. riffected_rowsを使用して、更新、挿入、または削除の影響を受ける行の数を取得します

$stmt = $mysqli->stmt_init();

$sql = "UPDATE users SET status = ? WHERE last_login < ?";
if ($stmt->prepare($sql)) {
    $new_status = 'inactive';
    $cutoff_date = '2024-01-01';
    $stmt->bind_param("ss", $new_status, $cutoff_date);
    $stmt->execute();

    echo "影響を受ける行の数:" . $stmt->affected_rows;

    $stmt->close();
} else {
    echo "前処理に失敗しました:" . $stmt->error;
}

4。注意すべきこと

  1. num_rowsを使用する場合、 store_result()は呼び出す必要があります。

  2. 影響を受けた_rowsは、store_result()を呼び出すことなく直接読むことができます。

  3. ステートメントオブジェクトを使用した後、 $ stmt-> close()を呼び出してリソースをリリースすることを忘れないでください。

  4. エラーメッセージをデバッグまたは表示するには、 $ stmt->エラーまたは$ mysqli->エラーを使用します。

V.結論

mysqli :: stmt_init()を合理的に使用し、 num_rowsriffected_rowsを組み合わせることにより、データベースクエリのフィードバックと結果処理をより効率的に管理できます。これは、安定したPHPアプリケーションを開発するために重要です。