सबसे पहले, आपको यह जांचना चाहिए कि क्या आपका इमेज कॉलम BLOB टाइप है !
मुझे आपकी SQL तालिका के बारे में कुछ भी पता नहीं है, लेकिन यदि मैं एक उदाहरण के रूप में अपना स्वयं का बनाने का प्रयास करूँगा।
हमें फ़ील्ड मिलीं id
(इंट), image
(बूँद) और image_name
(वर्चर (64))।
तो कोड इस तरह दिखना चाहिए (मान लें कि आईडी हमेशा '1' है और आइए इस mysql_query का उपयोग करें):
$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! :(";
}
आप इसे कई तरह से गलत कर रहे हैं। MySQL फ़ंक्शंस का उपयोग न करें - वे बहिष्कृत हैं! PDO का उपयोग करें या MySQLi . आपको डिस्क पर फ़ाइलों के स्थानों को संग्रहीत करने के बारे में भी सोचना चाहिए। छवियों को संग्रहीत करने के लिए MySQL का उपयोग करना Bad Idea™ माना जाता है। छवियों जैसे बड़े डेटा के साथ SQL तालिका को संभालना समस्याग्रस्त हो सकता है।
साथ ही आपका HTML फॉर्म मानकों से बाहर है। यह इस तरह दिखना चाहिए:
<form action="insert_product.php" method="POST" enctype="multipart/form-data">
<label>File: </label><input type="file" name="image" />
<input type="submit" />
</form>
सिडेनोट:
फ़ाइलों के साथ काम करते समय और उन्हें बीएलओबी के रूप में संग्रहीत करते समय, डेटा को mysql_real_escape_string()
, अन्यथा इसके परिणामस्वरूप सिंटैक्स त्रुटि होगी।