2

1: PDO はプリペアド ステートメントを使用します。プリペアド ステートメントの意味は、多くの関数で使用するものであり、多くの関数でそれを準備しました。次に、すべての関数で異なる SQL クエリを使用する必要があるか、または使用する必要があるかを知りたいだけです。私はinit.phpファイル(関数とdbへの接続を含む)の最初のポイントで多くのクエリを定義し、次に各関数でそれらを関数に渡してこれらのクエリを使用しますか?私が説明したことの単なる例:

$query1 = "Insert into names(id,name) values (:id,:names)"
$query2 = "insert into games(id,name) values (:id,:names)"

そして、このように機能する関数について

function job($query){
//do the job
}

この質問をするのは、ある場所で読んだため、この準備されたステートメントを複数の場所で使用する必要があるためです。その場合、関数で一意のクエリをどのように使用すればよいですか?

2: この :id :names を 2 つの準備済みステートメントで使用できますか?それとも、一意の名前を設定する必要がありますか?

$query1 = "Insert into names(id,name) values (:id,:names)"
$query2 = "insert into games(id,name) values (:id,:names)"

彼らは互いに衝突しませんか?

4

2 に答える 2

2

後で使用するために、すべてのクエリを1か所で定義するわけではありません。クエリを使用する場所に配置します。そうしないと、特に名前を付けた場合query1に、非常に混乱する可能性がありますquery2

別々に準備された同じクエリがある場合は、同じトークンを問題なく使用できます。

$stmt1 = $db->prepare($query1);
$stmt2 = $db->prepare($query2);

:id:nameの両方stmt1に完全に異なる値をバインドできますstmt2

于 2012-11-26T23:47:58.087 に答える
1

各クエリの直後に :id と :name をバインドする場合は問題ありませんが、両方のクエリステートメントを宣言した後に一度だけバインドすると、最後にバインドされたステートメントが値を上書きします。必要に応じて、クエリを処理する関数を作成できます。直前の変更が必要になった場合に備えて、自分が何をしているかを監視するために、毎回クエリを個人的に書き出しますが、作業を合理化するには問題ありません。

于 2012-11-26T23:44:38.763 に答える