Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Php . के साथ MySql डेटाबेस में ब्लॉब्स डालें

समस्या

$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)

अब आपके पास एक वास्तव में . है बड़ी स्ट्रिंग, और आपका डेटाबेस भारी होता जा रहा है।

संग्रहीत न करना पसंद करें डेटाबेस में छवियां , जहां आप इसकी मदद कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL के लिए Navicat

  2. MySQL FULL OUTER JOIN पर सिंटैक्स त्रुटि की रिपोर्ट क्यों करता है?

  3. MySQL में बाइनरी डेटा

  4. MySQL पर @GeneratedValue बहुरूपी सार सुपरक्लास

  5. MySQL जॉइन बनाम लेफ्ट जॉइन में अंतर