Trước tiên, bạn nên kiểm tra xem cột hình ảnh của bạn có phải là loại BLOB không !
Tôi không biết gì về bảng SQL của bạn, nhưng nếu tôi cố gắng lấy bảng của riêng tôi làm ví dụ.
Chúng tôi có các trường id
(int), image
(blob) và image_name
(varchar (64)).
Vì vậy, mã sẽ trông như thế này (giả sử ID luôn là '1' và hãy sử dụng mysql_query này):
$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence!
$image_name = addslashes($_FILES['image']['name']);
$sql = "INSERT INTO `product_images` (`id`, `image`, `image_name`) VALUES ('1', '{$image}', '{$image_name}')";
if (!mysql_query($sql)) { // Error handling
echo "Something went wrong! :(";
}
Bạn đang làm sai theo nhiều cách. Không sử dụng các hàm mysql - chúng không được dùng nữa! Sử dụng PDO hoặc MySQLi . Bạn cũng nên nghĩ đến việc lưu trữ các vị trí tệp trên đĩa. Sử dụng MySQL để lưu trữ hình ảnh được cho là Bad Idea ™. Việc xử lý bảng SQL với dữ liệu lớn như hình ảnh có thể gặp vấn đề.
Ngoài ra, biểu mẫu HTML của bạn không đạt tiêu chuẩn. Nó sẽ trông như thế này:
<form action="insert_product.php" method="POST" enctype="multipart/form-data">
<label>File: </label><input type="file" name="image" />
<input type="submit" />
</form>
Chú thích bên lề:
Khi xử lý tệp và lưu trữ chúng dưới dạng BLOB, dữ liệu phải được thoát bằng cách sử dụng mysql_real_escape_string()
, nếu không, nó sẽ dẫn đến lỗi cú pháp.