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

वर्डप्रेस - ब्लॉब डेटा के रूप में संग्रहीत डीबी से छवियां प्राप्त करना

आपको सब मिल रहा है उस उत्पाद आईडी के लिए तालिका में जानकारी, और फिर उसे एक छवि के रूप में प्रदर्शित करने का प्रयास करना। आपको परिणाम सरणी या SELECT . से छवि तक पहुंचने की आवश्यकता है बस छवि उदा। get_var का उपयोग करें get_results . के बजाय और img . चुनें * . के बजाय :

$product_id = get_query_var('id');
$image = $wpdb->get_var("SELECT img FROM products  WHERE id = ".$product_id);

वैसे, यह आपको SQL इंजेक्शन के लिए खुला छोड़ देता है, इसलिए आपको वास्तव में $wpdb->prepare का उपयोग करना चाहिए अपनी क्वेरी में एक वैरिएबल शामिल करने के लिए, उदा.

$image = $wpdb->get_var( 
    $wpdb->prepare("SELECT img FROM products  WHERE id = %d", $product_id)  
);

BLOB आकार सीमा

ध्यान दें कि MYSQL में एक BLOB 64kb तक सीमित है। यदि आपकी छवियां इससे बड़ी हैं, तो आपको एक MEDIUMBLOB का उपयोग करना होगा जो कि 16MB का हो

डेटाबेस में सीधे BLOB के रूप में छवि पथ को सहेजने के बजाय

एक अधिक व्यावहारिक उपाय सिर्फ पथ को बचाना है।

ऐसा करने के लिए, आपको छवियों को अपलोड करने के लिए एक फ़ोल्डर बनाने की आवश्यकता होगी (उदाहरण के लिए नीचे मेरे कोड में, यह वेब रूट में है और myimages कहा जाता है। ), और आपके डेटाबेस में एक नया VARCHAR या TEXT कॉलम (इसे img_path कहा जाता है) नीचे दिए गए उदाहरण में)।

/* 1. Define the path to the folder where you will upload the images to, 
      Note, this is relative to your web root. */ 
define (MY_UPLOAD_DIR, "myimages/");

$imagefilename = basename( $_FILES['image']['name']);

/* 2. define the full path to upload the file to, including the file name */
$fulluploadpath = get_home_path(). MY_UPLOAD_DIR . $imagefilename;

$image_name = strip_tags($_FILES['image']['name']);
$image_size = getimagesize($_FILES['image']['tmp_name']);

/* 3. Do your validation checks here, e.g. */
if($image_size == FALSE) {
    echo 'The image was not uploaded';
} 
/* 4. if everything is ok, copy the temp file to your upload folder */
else if(move_uploaded_file($_FILES['image']['tmp_name'], $fulluploadpath )) {
    /* 5. if the file was moved successfully, update the database */
    $wpdb->insert( 
        $table, 
        array( 
            'title' => $title,
            'description' => $description,
            'brand' => $brand,
            'img_name' => $image_name,
            'img_path' => MY_UPLOAD_DIR . $imagefilename, /* save the path instead of the image */
        )
    ); 

} else {
    //Display an error if the upload failed
    echo "Sorry, there was a problem uploading your file.";
}

डेटाबेस से छवि को पुनः प्राप्त करने और उसे प्रदर्शित करने के लिए:

$product_id = get_query_var('id');
/* query the database for the image path */
$imagepath = $wpdb->get_var( 
    $wpdb->prepare("SELECT img_path FROM products  WHERE id = %d", $product_id)  
);

/* 6. Display the image using the path. 
      Because the path we used is relative to the web root, we can use it directly 
      by prefixing it with `/` so it starts at the webroot */ 
if ($imagepath)
    echo '<img src="/'.$imagepath.'" />';

उपरोक्त कोड अवांछित है, लेकिन मूल विचार वहां है। साथ ही, यदि समान नाम वाली फ़ाइल पहले से मौजूद है, तो यह काम नहीं करेगी, इसलिए हो सकता है कि आप नाम को विशिष्ट बनाने के लिए उसमें टाइमस्टैम्प जोड़ने पर विचार करना चाहें।

संदर्भ :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. श्रेणियों द्वारा समूहीकृत मानों की संख्या का चयन कैसे करें

  2. अमान्य स्मृति पता या शून्य सूचक विचलन गोलंग डेटाबेस

  3. knex के साथ MySQL JSON कॉलम में डालने पर ऑब्जेक्ट को स्वचालित रूप से स्ट्रिंग करना

  4. डॉकटर के साथ अपाचे, माईएसक्यूएल और पीएचपी को कंटेनरीकृत करना

  5. MySQL InnoDB ईमेल पता युक्त पूर्ण पाठ खोज