Monday, January 02, 2006

Array On Mysql 4.1 (angka ganjil)

Pagi hari yang cerah untuk bekerja.
Pagi ini ada hal baru yang ditemui… ada sebuah pertanyaan besar, bagaimana cara membuat variable array di mysql??
saya punya sebuah query yang memerlukan sebuah array dalam kondisinya, sehingga memudahkan dalam melakukan coding (PHP).
contoh :
SELECT * FROM kura WHERE idKura IN (’1′,’2′,’3′);
solusinya bisa menggunakan :
SELECT * FROM kura WHERE idKura IN ‘%s’;

nah itu memang bisa jalan dengan mudah, kita tinggal ngetikin aja, atur di codingnya.

nah bagaimana klo querynya banyak :
SELECT * FROM kura
LEFT JOIN
(SELECT * FROM mati_wae
WHERE idMatiWae IN (’1′,’2′,’3′))
WHERE idKura IN(’1′,’2,’3′) AND idJebu IN (’1′,’2′)

nah klo kaya’ gitu apa yang mau dilakukan??

pertama, saya coba pake set variable
contoh :
SET @MATIWAE = “1,2,3″, @KURA = “1,2,3″, @JEBU = “1,2″;
lalu querynya diganti :
SELECT * FROM kura
LEFT JOIN
(SELECT * FROM mati_wae
WHERE idMatiWae IN (@MATIWAE))
WHERE idKura IN(@KURA) AND idJebu IN (@JEBU);

ternyata ada yang salah, set variable ternyata gak bisa bikin array, ini kutipannya :
variable can evaluate to an integer, real, string, or NULL value.
oww tarnyata bener-bener mati wae…
hmm, akhirnya mau gak mau solusi sementara ternyata dengan menggunakan variable ‘%s’. tapi bayangkan, klo ada variable yang sama diulang terus (misalnya variabel @JEBU) sebanyak 50 kali, jadi berapa kali yah ‘%s’ nya???

5 comments:

Toni said...

klo idJebu diulang berkali-kali .. ake search replace aja .. bsia pake built in function php (preg_replace?) atau klo pengen abusing pattemplate .. kasih aja stringnya ke pattemplate trus diparse ..

fadel said...

@TONI :
lah klo misalnya itu parameter inputan??? kan klo pake query wrapper itu kan jadi parameter inputan ???
CMIIW....

Riyono said...

fadel wrote: "hmm, akhirnya mau gak mau solusi sementara ternyata dengan menggunakan variable ‘%s’. tapi bayangkan, klo ada variable yang sama diulang terus (misalnya variabel @JEBU) sebanyak 50 kali, jadi berapa kali yah ‘%s’ nya???"

ya pakenya %1$s, %2$s, %3$s, dst donk... inputnya kan jadi tetep sekali aja untuk si jebu.

Contoh:

$query_format = 'SELECT * FROM kura WHERE idKura IN %1$s AND idKura2 IN %1$s AND idNinja IN %1$s';
$mysql_array1 = "('1', '2', '3')";
$query = sprintf($query_format, $mysql_array1);

fadel said...

@NICKO :
hmm ternyata ada yah kaya' gitu...
wew keren...
makacih bang nicko :p

somebody said...

酒店經紀人,菲梵酒店經紀,酒店經紀,禮服酒店上班,酒店小姐,便服酒店經紀,酒店打工,酒店寒假打工,酒店經紀,酒店經紀,專業酒店經紀,合法酒店經紀,酒店暑假打工,酒店兼職,便服酒店工作,酒店打工經紀,制服酒店經紀,專業酒店經紀,合法酒店經紀,酒店暑假打工,酒店兼職,便服酒店工作,酒店打工,酒店經紀,制服酒店經紀,酒店經紀