withを使用fetch_array(MYSQLI_ASSOC)
しますquery
が、準備済みステートメントでは機能しません。準備されたステートメントのそれに相当するものは何ですか?
2 に答える
0
受け入れられている PDO ソリューションに加えて、mysqli 用のソリューションを次に示します。
最初に覚えておくべきことは、mysqli の準備済みステートメントは結果をバインドする必要がないということです。
バインドされた結果を使用する代わりに、mysqli_result インターフェースを介して結果を取得することもできます。mysqli_stmt_get_result() は、バッファされた結果セットを返します。
たとえば、次のようになります。
$sql = 'SELECT * FROM mytable ORDER BY column LIMIT ?,' . SOME_CONSTANT;
ステートメントをバインドして実行したら、get_result() を呼び出すことができます。
$stmt = $db->prepare($sql);
$stmt->bind_param('i', $int) || die($db->error);
$stmt->execute() || die($db->error);
$result = $stmt->get_result();
この時点で、機能的には次のものと同等です。
if ($result = $db->query($sql)) {
そして、おなじみの fetch_array を呼び出すことができます:
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$results[] = $row;
}
準備されていない同等の結果を閉じる代わりに、ステートメントを閉じます。
$stmt->close();
于 2013-09-10T14:04:47.250 に答える