Zend Framework - seçin fıkrasında satırları sayma?

1 Cevap php

Sql sorgu satırları çıkan sayımı Zend Framework ve şu anda şaşırıp soruşturma ... Ben (dokümantasyon ve bazı blogposts ve öğreticiler) deneyin her yöntemi (Call to undefined function gibi) bir hata döndürür ya da sadece yanlış verir değer.

Bu denedim:

$checkquery = $db->select()
   ->from('users', 'COUNT(*)')
   ->where('login = ?', $login)
   ->where('password = ?', $password)
   ->query();

$checkrequest=fetchRow($checkquery)->num;

... O zaman bu bir:

$checkquery = $db->select()
   ->from('users', '*')
   ->where('login = ?', $login)
   ->where('password = ?', $password)
   ->query();

$checkrequest=count($checkquery->fetchAll());

ve hatta:

$checkquery = $db->select()
   ->from('users', '*')
   ->where('login = ?', $login)
   ->where('password = ?', $password)
   ->query();

$checkrequest=$checkquery->fetchAll()->num;

Ayrıca, rowCount() ve count(fetchRow()) ve count(fetchAll()->toArray()). Ama her zaman daha ekleme işlevi bir hata mesajı veya db yinelenen ekler var. Yani Zend Framework 1.9 SELECT yan tümcesinde çıkan satır hesaplama yapmak için doğru yolu (ben bunu kullanıyorum) nedir?

1 Cevap

Aşağıdaki gibi yapmaya çalışıyoruz kullanım şöyledir:

$checkquery = $db->select()
   ->from("users", array("num"=>"COUNT(*)"))
   ->where("login = ?", $login)
   ->where("password = ?", $password);

$checkrequest = $db->fetchRow($checkquery);
echo $checkrequest["num"];

Ben diğer ipuçları bir çift var:

Ben böyle sorguyu yeniden olacaktır:

$checkquery = $db->select()
   ->from("users", array("pwd_is_correct"=>
     $db->quoteInto("(password = SHA1(CONCAT(salt, ?)))", $password)))
   ->where("login = ?", $login);

$checkrequest = $db->fetchRow($checkquery);
if ($checkrequest === false) {
  echo "no such login\n";
} else if ($checkrequest["pwd_is_correct"] > 0) {
  echo "login and password are correct\n";
} else {
  echo "login found but password is incorrect\n";
}

Aslında o not yanlış giriş veya şifre hangi onlara en iyi güvenlik uygulama - Sen kullanıcıya farklı durumları bildirmek zorunda değilsiniz. Ama sen başarısız şifreleri bir çok alan var bir hesap kilitlemek böylece kendi kodunu bilmek isteyebilirsiniz.

SHA1() daha SHA2() hangi available in MySQL 5.5 ve kadar iyi değil.