Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Wordpress - mendapatkan gambar dari db yang disimpan sebagai data gumpalan

Anda mendapatkan semua informasi dalam tabel untuk id produk itu, dan kemudian mencoba menampilkannya sebagai gambar. Anda perlu mengakses gambar dari larik hasil atau SELECT hanya gambar misalnya gunakan get_var alih-alih get_results dan pilih img bukannya * :

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

Omong-omong, ini membuat Anda terbuka untuk injeksi SQL, jadi Anda benar-benar harus menggunakan $wpdb->prepare untuk menyertakan variabel dalam kueri Anda, mis.

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

Batasan ukuran BLOB

Perhatikan bahwa BLOB di MYSQL dibatasi hingga 64kb. Jika gambar Anda lebih besar dari ini, Anda harus menggunakan MEDIUMBLOB yang berukuran 16MB

Simpan jalur gambar alih-alih langsung di database sebagai BLOB

Solusi yang lebih praktis adalah menyimpan jalurnya saja.

Untuk melakukan ini, Anda perlu membuat folder untuk mengunggah gambar (misalnya dalam kode saya di bawah ini, di root web dan disebut myimages ), dan kolom VARCHAR atau TEXT baru di database Anda (disebut img_path dalam contoh di bawah).

/* 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.";
}

Untuk mengambil gambar dari database dan menampilkannya:

$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.'" />';

Kode di atas belum diuji, tetapi ide dasarnya ada di sana. Selain itu, ini tidak akan berfungsi jika file dengan nama yang sama sudah ada, jadi Anda mungkin ingin mempertimbangkan untuk menambahkan stempel waktu ke nama untuk membuatnya unik.

Referensi :




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aplikasi OpenShift tidak dapat terhubung ke MySQL:JDBCConnectionException:Tidak dapat membuka koneksi

  2. MySQL:Indeks optimal untuk antar kueri

  3. mysql_fetch_array dan hanya kunci array string

  4. Mengembalikan Output dari Python CGI MySQL Script

  5. Atas permintaan pagination (Catatan paginasi sesuai permintaan pengguna)