समस्या
$sql = "INSERT INTO ImageStore(ImageId,Image)
VALUES('$this->image_id','file_get_contents($tmp_image)')";
यह PHP में $sql
. नाम की एक स्ट्रिंग बनाता है . एक मिनट के लिए MySQL को भूल जाइए, क्योंकि आप अभी तक कोई क्वेरी निष्पादित नहीं कर रहे हैं। आप बस एक स्ट्रिंग बना रहे हैं।
PHP के जादू का मतलब है कि आप एक वेरिएबल नाम लिख सकते हैं - जैसे, $this->image_id
— अंदर दोहरे उद्धरण चिह्न और चर अभी भी जादुई रूप से विस्तारित होते हैं।
"वैरिएबल इंटरपोलेशन" के रूप में जानी जाने वाली यह कार्यक्षमता फ़ंक्शन कॉल के लिए नहीं होती है। तो, आप यहां केवल स्ट्रिंग लिख रहे हैं "file_get_contents($tmp_image)"
डेटाबेस में।
समाधान (1)
तो, file_get_contents($tmp_image)
को कॉल करने के परिणाम को संयोजित करने के लिए , आपको स्ट्रिंग से बाहर कूदना होगा और चीजों को स्पष्ट रूप से करना होगा:
$sql = "INSERT INTO ImageStore(ImageId,Image)
VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
(आप सिंटैक्स से भी देख सकते हैं कि यह कैसे काम करता है।)
समाधान (2)
अब आपके पास समस्या यह है कि यदि बाइनरी डेटा में कोई '
. है , आपकी क्वेरी मान्य नहीं है। तो आपको इसे mysql_escape_string
के माध्यम से चलाना चाहिए क्वेरी ऑपरेशन के लिए इसे साफ करने के लिए:
$sql = "INSERT INTO ImageStore(ImageId,Image)
VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
समाधान (3)
अब आपके पास एक वास्तव में . है बड़ी स्ट्रिंग, और आपका डेटाबेस भारी होता जा रहा है।
संग्रहीत न करना पसंद करें डेटाबेस में छवियां , जहां आप इसकी मदद कर सकते हैं।