0

単一のスクリプトで PDO を使用して複数の SQL クエリを実行するためのベスト プラクティスを見つけようとしています。データベース接続はスクリプトの開始時に行われますが、その後で複数の異なるクエリを作成する必要があります。私が現在行っていること(ベストプラクティスかどうかはわかりません)は次のとおりです。

$db = new PDO('mysql:host='.$DBHOST.';dbname='.$DBNAME.';charset=UTF-8', $DBUSER, $DBPASSWORD);

$query = $db->prepare("SELECT count(*) as total from bande_ips WHERE ip=:ip");
$query->bindValue(':ip', $_SESSION['REMOTE_ADDR'], PDO::PARAM_STR);
$query->execute();
$array = $query->fetchAll(PDO::FETCH_ASSOC);

$query = NULL;
$query = $db->prepare("SELECT * from failed_login WHERE IP=:ip and email=:email");
$query->bindValue(':ip', $_SESSION['REMOTE_ADDR'], PDO::PARAM_STR);
$query->bindValue(':email', $email, PDO::PARAM_STR);
$query->execute();
$array = $query->fetchAll(PDO::FETCH_ASSOC);

ご覧のとおり、1 つのスクリプトで 2 つの個別のクエリを用意しています。しかし$query = NULL;、スクリプトが事前に個別のクエリを混乱させていたため、設定を開始しました(呼び出していない古いクエリのパラメーターを期待していたため、これがベストプラクティスであるかどうかの不確実性につながりました。)

PDO への移行を続行する前に、これがベスト プラクティスであることを確認したいだけです。

4

1 に答える 1

1

スクリプトは事前に個別のクエリを混乱させていました(呼び出していない古いクエリのパラメーターを期待していました)

これは、他のコードでのプログラム フローの問題です。ほとんどの場合、ループで実行されます。

$queryここに投稿したコードについては、設定する必要はありませNULLん。とにかく次の行で上書きされます。

utf8mysql の有効な文字セットはではなく、であることに注意してください。utf-8

于 2013-01-05T23:02:04.803 に答える