私は現在、php でデータベース アクセスと管理クラスの小さなセットに取り組んでいます。よく知られている mysqli をよりよく理解しようとしていますが、mysqli_stmt::bind_param で定義された変数型が現在のアプリケーション内でセキュリティ/ユーティリティを強化できる理由と方法を理解できていません。
mysql ステートメントを実行する利点は明らかです。クエリと値は 2 つの異なるパスで送信されます。これにより、アプリケーションの安全性とエラー防止性が向上します。しかし、これらの変数はどうなりますか? これらは php によって事前にチェックされますか、それとも mysql でチェックされますか?
mysqliが何かをするのが面倒なだけですか?
!is_numeric($v) && ( !is_null($v) || $v != “NULL”) ? “‘$v’” : $v
または、私が知らないmysql側にvar型定義がありますか?
“PREPARE stmt_name FROM … “;
“SET @var1 = 3”;
“SET @var2 = ‘foo’”;
“EXECUTE stmt_name USING @var1, @var2”;
この値についてはあまり進んでいないようです。文字列として渡されたものはすべて適切に評価されます…では、なぜわざわざ?
これに関連しているにもかかわらず、別の副次的な質問があります: パケットで blob 文字列を送信する mysqli の方法を複製する方法はありますか?
ありがとさよなら