Zend_Db Soru ...

1 Cevap php

Bu çalışması gerekir? (Giriş sayısını artırmak?)

// update the login count
$data = array(
   'logins' => 'logins + 1'
);

$n = $db->update('users', $data, 'user_id = '.$_userId);

1 Cevap

$data = array(
   'logins' => new Zend_Db_Expr('logins + 1')
);

SQL enjeksiyon gibi savunmasız değildir bu yüzden de alıntı kullanın:

$n = $db->update('users', $data, $db->quoteInto('user_id = ?', $_userId));


Yorumlarınız Re: Evet, update () yöntemi durumunda, bu tip Zend_Db_Expre bir nesneyi kullanmak sürece değişmez bir değer yolluyoruz varsayar. Bu kendinizi test edebilirsiniz:

$db->getProfiler()->setEnabled(true);
$n = $db->update('users', $data, $db->quoteInto('user_id = ?', $_userId));
$qp = $db->getProfiler()->getLastQueryProfile();
echo $qp->getQuery() . "\n";

Eğer $data dizide verecek herhangi bir edebi değeri bu kadar sorgu bu gibi bakıyor biter parametrelendirildiğinde:

UPDATE `users` SET `login` = ? WHERE user_id = 123

Eğer sınıf Zend_Db_Expre bir nesne kullanırsanız, bunun yerine parametrelendirilmesidir, kelimenin tam anlamıyla sorgu içine dize interpolate bilir:

UPDATE `users` SET `login` = NOW() WHERE user_id = 123

Böyle ifadeler interpolate zaman güvenlik açıklarını alamadım bu yüzden size doğrulama sorumlu olduğunu unutmayın.