PHP dizi) (sayısı kullanılarak

4 Cevap

Im sayısı () işlevi, sonuç benim için şaşırtıcı biraz considere aşağıdaki örnek kullanarak dizideki elemanların miktarını almak için çalışıyor.

Sağlanan kullanıcı kimliği yanlış olduğunu varsayalım, ve bu nedenle hiçbir sonuç vardı, sonra sayım işlevinin sonucu 0 olmaz mıydı? henüz 1. neden bana açıklayabilir?

teşekkürler

$q = mysql_query("select password from users where user_name = '" .  $userID   .   "'");
$check = mysql_fetch_array($q);

$result = count($check);

echo "RESULT:" . $result;

4 Cevap

Bu bir sonuç kümesindeki satırları saymak için yanlış bir yoldur. mysql_fetch_array() üzerine belgelerine, her şeyden önce

Returns an array of strings that corresponds to the fetched row, or FALSE if there are no more rows.

Ergo, biz bunu yaparsak

echo count( false );

Biz çıkış 1 görebilirsiniz. Neden? count() belgeleri de söyler Çünkü

If var is not an array or an object with implemented Countable interface, 1 will be returned.

Uygun sayımı yapmak, kullanmak mysql_num_rows()

$q = mysql_query("select password from users where user_name = '" .  $userID   .   "'");
$result = mysql_num_rows( $q );

if ( 0 == $result )
{
  // no rows in result
}

mysql_num_rows yerine sayısının kullanın. count değeri için 1 döner FALSE

count(), çünkü başarısızlık durumunda 1 döndürür $check bir dizi değil.

Kimden documentation:

Var uygulanan Sayılabilir arayüzü ile bir dizi ya da bir nesne değilse, 1 iade edilecektir

(Sorgu kod bile onun sonuçlarını Tahlil noktasına ulaşmak gerekir başarısız olursa) Ama yine de doğrudan hata davalarını gerekir. Diğer doğru söylediler Ayrıca, size mysql_num_rows() için ne o gibi bir sorgu döndürür sonuç sayısını nasıl değil

Artık satır varsa mysql_fetch_array false döndürür. count(false) = 1.

Eğer sonuç sayısını saymak istiyorsanız mysql_num_rows kullanmayı deneyin.