ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用して画像を MySQL データベースに適切にアップロードするにはどうすればよいですか?
PHP を使用した MySQL データベースへのイメージのアップロード
PHP を使用して MySQL データベースにイメージを挿入するには、いくつかの手順が必要です。提供したコードの問題に対処しましょう:
1.データベース テーブルの構造:
データベース テーブルに、画像データを格納するための BLOB または MEDIUMBLOB タイプとして定義された列があることを確認してください。
2.プリペアド ステートメント:
非推奨の mysql_query() 関数を使用する代わりに、PDO または MySQLi を使用するプリペアド ステートメントに切り替えます。準備されたステートメントは SQL インジェクションの脆弱性を防ぎます。
3.適切な画像処理:
現在のコードは、一時ファイルから画像データを直接取得します。これはセキュリティ上のリスクです。代わりに、file_get_contents() を FILE_BINARY オプションとともに使用して、バイナリ コンテンツが適切に処理されることを確認します。
4.サニタイズ:
SQL インジェクションを防ぐために、addslashes() または mysqli_real_escape_string() を使用して画像データをサニタイズします。
5.正しい挿入クエリ:
挿入クエリはテーブル構造と一致し、それに応じてデータをサニタイズする必要があります。修正版は次のとおりです:
$stmt = $mysqli->prepare("INSERT INTO product_images (id, image, image_name) VALUES (?, ?, ?)"); $stmt->bind_param("sis", 1, $image, $image_name); $image = file_get_contents($_FILES['image']['tmp_name'], FILE_BINARY); $image_name = addslashes($_FILES['image']['name']); if ($stmt->execute()) { echo "Image uploaded successfully"; } else { echo "Error: " . $mysqli->error; }
6. HTML フォーム:
HTML フォームでは、リクエストでバイナリ データを送信できるようにする enctype="multipart/form-data" 属性を使用する必要があります。さらに、