1

わかりましたので、私のウェブサイトには簡単に 100 ~ 200 のクエリがあり、すべてパラメーター化されています。

そのうちの 1 つの例を次に示します。

$mysqli = new mysqli('localhost', 'user', 'password', 'db_name');
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$stmt = $mysqli->prepare("SELECT `x` FROM `y` WHERE `z` = ?");
$stmt->bind_param("s", $test);
$stmt->execute();
$stmt->store_result();
$stmt->close();

$mysqli->close();

私の質問は、データベースへの接続を開閉するためのベストプラクティスは何ですか?

接続を開いたままにし、複数のクエリを実行してから、ページの最後で接続を閉じるのが最善ですか。そのようです:

$mysqli = new mysqli('localhost', 'user', 'password', 'db_name');
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$stmt = $mysqli->prepare("SELECT `a` FROM `b` WHERE `c` = ?");
$stmt->bind_param("s", $test1);
$stmt->execute();
$stmt->store_result();
$stmt->close();

$stmt = $mysqli->prepare("SELECT `x` FROM `y` WHERE `z` = ?");
$stmt->bind_param("s", $test2);
$stmt->execute();
$stmt->store_result();
$stmt->close();

$mysqli->close();

それとも、各クエリの前に接続を開き、その後すぐに閉じるのが最善ですか? そのようです:

$mysqli = new mysqli('localhost', 'user', 'password', 'db_name');
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$stmt = $mysqli->prepare("SELECT `a` FROM `b` WHERE `c` = ?");
$stmt->bind_param("s", $test1);
$stmt->execute();
$stmt->store_result();
$stmt->close();

$mysqli->close();


$mysqli = new mysqli('localhost', 'user', 'password', 'db_name');
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$stmt = $mysqli->prepare("SELECT `x` FROM `y` WHERE `z` = ?");
$stmt->bind_param("s", $test2);
$stmt->execute();
$stmt->store_result();
$stmt->close();

$mysqli->close();

現在、ページ開始タグの前に接続を開き、終了タグ<html>の直後に閉じてい</html>ます。これは安全な/良い習慣ですか?

4

2 に答える 2

1

接続を開いたままにし、複数のクエリを実行してから、ページの最後で接続を閉じるのが最善ですか。

はい。

それとも、各クエリの前に接続を開き、その後すぐに閉じるのが最善ですか?

いいえ。

現在、ページの開始タグの前に接続を開き、終了の直後に閉じます。これは安全な/良い習慣ですか?

いいえ。アプリケーションは、ページ開始タグ
の前に接続を簡単に閉じることができるように構成する必要があります。これは、出力が開始される前にすべてのデータベースとのやり取りを終了する必要があるためです。<head>

PHPでパラメータ化されたクエリを実行するためのベストプラクティス?

もちろん、関数を作成するには、10 行ではなく 1 行で実行します (そして、このすべての開始/終了処理を処理するには)、次のようにします。

$data = $db->get("SELECT `a` FROM `b` WHERE `c` = ?", $test1);
于 2013-07-28T17:35:13.480 に答える