0

どちらが速いですか?mysqliプリペアドステートメントを使用した配列のフェッチ:

    $statement=$mysqli->prepare("SELECT `name`,`age` FROM `users` WHERE `id`=?");
    $statement->bind_param('i',$id);
    $statement->execute();
    $statement->bind_result($array['0'],$array['1']);
    $statement->fetch();
    return $array;

または、mysqliのみで配列をフェッチします。

return $mysqli->query("SELECT `name`,`age`FROM `users` WHERE `id`='".$id."'")->fetch_row();

編集:通常のクエリは安全ではないため、プリペアドステートメントのみを使用してください!パフォーマンスについて心配する必要はありません-セキュリティについて心配してください!

EDIT2:最近、MySQLiの代わりにPDOを使い始めました。PDOは、多くの点でMySQLi拡張機能よりも優れています。それらの1つは、多次元配列のフェッチとループです。

4

2 に答える 2

2

パフォーマンスは2の間で取るに足らないものでなければなりません。ただし、それについて心配する必要はありません。準備されたステートメントははるかに安全です。

直接クエリでは、$idクエリ文字列、フォームなどのユーザー入力からの場合、SQLインジェクション攻撃と呼ばれるものが許可されます。

于 2013-01-01T15:12:38.183 に答える
2

厳密なルールがあります。強い理由がある場合にのみ、パフォーマンスの質問に悩まされます。
そうでなければ、あなたはただあなたの時間を無駄にするか、あるいは事態を悪化させるでしょう。

あなたの特定のケースでは、たとえ存在するとしても、違いはほとんど目立たないでしょう。
したがって、想像できる「パフォーマンスの問題」ではなく、適切な設計が問題になるはずです。

于 2013-01-01T15:14:41.757 に答える