Koneksi database tidak stabil? solusinya?


(Elviskudo) #1

eh, temen-temen butuh bantuan lagi nih!

saat koneksi dengan database mysql (XAMPP 1.7.3) terkadang saya:

untuk membaca table menggunakan:




$cri = new CDbCriteria;

$cri->select = '*';

$cri->condition = 'id_user=:id_user';

$cri->params = array(':id_user'=>(int)$id_user);

$users = UserModel::model()->find($cri);

echo $users->nama;



kadang menggunakan:




$id_user = $_GET['id_user'];

$users = UserModel::model()->find('id_user=?',array($id_user));

echo $users->nama;



dan anehnya itu kadang pake cara pertama bisa jalan, tapi pada file cara pertama tidak bisa jalan jadi pake cara kedua.

terus untuk meng-insert table:

kadang menggunakan:




$query = "

INSERT INTO users VALUES(

null,

'".date('Y-m-d H:i:s')."',

'".date('Y-m-d H:i:s')."')

";

$command = Yii::app()->db->createCommand($query);

$command->execute();



kadang menggunakan:




$insert = new CategoryModel;

$insert->nama = $nama;

$insert->keterangan = $keterangan;

$insert->id_user = $id_user;

$insert->save();



apa memang seperti itu? adakah solusinya?

thanx


(Garry3peace) #2

Saya menebak, mungkin terjadi kesalahan penulisan koding.

Kadang jalan kadang nggak bisa saja diakibatkan variabel yang masih kosong dipassing ke codingnya (koding pertama), jadinya gak sukses.


(Xicath) #3

Saya menebak, mungkin setingan rules-nya kurang pas atau setingan databasenya yg not null mungkin.

mungkin bisa cek print_r($users) biar lebih jelas, kalau error query biasanya throw error bla blaa…

kalau tdk error mungkin nilai kondisinya yg kosong.

Btw, $_GET[‘id_user’] harus int, misal : 101, 999, walaupun d manual disebut string.

Jadi misal $_GET[‘id_user’] = 101R, tidak akan valid, ketangkep preg_match.

klo ga salah…


(Elviskudo) #4

eh, ini ada lagi nih:




echo 'session sekarang:'.Yii::app()->session->get('level_userlogin');

//print_r($_POST);

if(Yii::app()->session->get('level_userlogin') === 1) {

echo 'ini level betul';

else

echo 'level lain';



ini hasilnya:




session sekarang:1

level lain



disitu yang kebaca adalah


level lain

bukan


ini level betul

tidak kebaca, padahal sudah jelas kalo level_userloginnya adalah 1, aneh banget nih?


(Garry3peace) #5

ada kemungkinan gara-gara ‘level_userlogin’ nya itu adalah ‘1’ bukan 1 integer.

kalau begini mungkin hasilnya akan benar


if(Yii::app()->session->get('level_userlogin') === '1')


(Elviskudo) #6

wah, terima kasih temen-temen atas bantuannya.

benar2 problem solver nih. :)


(Joss) #7



echo 'session sekarang:'.Yii::app()->session->get('level_userlogin');

//print_r($_POST);

if(Yii::app()->session->get('level_userlogin') === 1) {

echo 'ini level betul';

else

echo 'level lain';



Kata bu Guru operator perbandingan bisa === atau == tapi katanya "Good programming practice" jangan menggunakan 1 tapi gunakan boolean seperti TRUE | FALSE

Mudah2an bisa membantu

Cheers :)


(Garry3peace) #8

ikut nimbrung lagi…

perasaan sih ‘1’ itu bukan true atau false, tapi level nya, jadi bisa 1, bisa 2, bisa 3 gitu deh~


(Joss) #9

Oh iya betul, maklum lagi belajar :)