ホームページ >データベース >mysql チュートリアル >PHP を使用して BLOB 画像データを MySQL に適切に挿入するにはどうすればよいですか?
MySQL にイメージを保存しようとすると、次の問題が発生する可能性があります。印刷時に正しく出力される場合でも、画像データが期待どおりに保存されません。これは、PHP 関数 file_get_contents() が SQL クエリ内で文字列として扱われ、実行されないためです。
1 つの解決策は、file_get_contents() の結果を連結することです。 SQL クエリ文字列を使用して、クエリの一部として実行できるようにします。次のコードは、このアプローチを示しています。
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id', '" . file_get_contents($tmp_image) . "')";
SQL インジェクションの脆弱性を防ぐには、特殊文字を含むバイナリ データをバイナリ データに挿入する前にエスケープすることが重要です。データベース。これは、mysql_escape_string() 関数を使用して実現できます。更新されたコードは次のようになります。
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id', '" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
ベスト プラクティスとして、画像などの大きなバイナリ データを MySQL に直接保存しないことをお勧めします。データベース。代わりに、それらを別のファイルに保存し、データベース内のパスを参照することを検討してください。このアプローチにより、データベースのパフォーマンスと柔軟性が向上します。
以上がPHP を使用して BLOB 画像データを MySQL に適切に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。