Tutorial PHP : PDO Prepared Statement Update Multiple Data Dengan Where IN

PDO Prepared Statement Update Multiple Data Dengan Where IN

Dalam contoh kasus seperti misal ketika Anda ingin melakukan update data secara masal, tentu disini data akan diselect lalu dikirim dalam bentuk array. Bentuk datanya tentu dinamis karena nanti data yang dikirm mungkin jumlahnya akan bervariasi dan tentu jika menggunakan prepared statement kita perlu memikirkan untuk membuat data nilai placholder untuk paramaternya menjadi lebih dinamis sesuai data yang dikirimkan.

Contoh kasus yang akan dibuat disini adalah kita akan melakukan update banyak data sekaligus menggunakan prepared statement dimana nilai parameter id yang di update akan ditaruh didalam klausa WHERE IN, jadi datanya akan dikirim dalam bentuk array.

Tanpa Prepared Statement

Baca juga : Tutorial PHP Membuat Multiple Update Dengan Select Option dan Checkbox

Dengan query biasa, Anda bisa membuatnya secara sederhana, pertama data akan di implode terlebih dahulu lalu dimasukan dengan klausa WHERE IN, misalnya seperti berikut :


$sql="UPDATE tabel SET data=0 WHERE kolom IN(3,4)"
$this->koneksi->query($sql)

Tapi sekarang, bagaimana jika kita harus menggunakan prepared statement ?

Dengan Prepared Statement

Didalam kolom IN nanti kita perlu membuat sebuah placeholder atau tanda “?” yang fleksibel sesuai dengan jumlah data yang dikirim. Sehingga nanti Anda bisa membuat fungsinya menjadi seperti berikut :

Contoh :


		public function setData_prepared($data){
		try
		{
			//$data adalah nilai array
			$in  = str_repeat('?,', count($data) - 1) . '?'; // menghasilkan nilai ?,?, dst
			$sql="UPDATE tabel SET kolom_set=0 WHERE id_kolom IN($in) ";
			$stmt = $this->link->prepare($sql);		
			$stmt->execute($data); // langsung eksekusi tanpa bind param
			return true;
		}
		catch(PDOException $e)
		{
			echo $e->getMessage();
		}

		
	}

1 Response to "Tutorial PHP : PDO Prepared Statement Update Multiple Data Dengan Where IN"

  1. mau komen tapi kaga ada sedikitpun yang paham T.T
    bang sekali2 nulis info techno juga mungkin biar orang awam bisa mampir

    ReplyDelete

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin