Mysql_query () herhangi bir sonuç döndürdü varsa nedir doğru yolu kontrol etmek için?

7 Cevap php

Ben en çok sezgisel bir yaklaşım gibi görünüyordu çalıştı

$query = "SELECT * FROM members WHERE username = '$_CLEAN[username]'
                                  AND password = '$_CLEAN[password]'";
$result = mysql_query($query);

if ($result)
{ ...

but that didn't work because mysql_query returns a true value even if 0 rows are returned. I basically want to perform the logic in that condition only if a row is returned.

7 Cevap

Kullan mysql_num_rows:

 if (mysql_num_rows($result)) {
    //do stuff
 }

Eğer tam bir satır için kontrol ediyoruz:

if ($Row = mysql_fetch_object($result)) {
    // do stuff
}

Sen mysql_fetch_array() yerine, ya da ne olursa olsun kullanabilirsiniz, ancak prensip aynıdır. Eğer 1 veya daha fazla satır bekliyorsanız yapıyorsan:

while ($Row = mysql_fetch_object($result)) {
    // do stuff
}

Bu döngü olacak kadar bunu devam edeceğiz bu noktada, satır biterse.

$sql = "SELECT columns FROM table";
$results = mysql_query($sql, $conn);
$nResults = mysql_num_rows($results);
if ($nResults > 0) {
   //Hurray
} else {
   //Nah
}

Bu çalışması gerekir.

mysql_num_rows

Bir sonuç kümesinden satırların sayısını alır. Bu komut gerçek bir sonuç kümesi döndüren SELECT veya SHOW gibi tablolar için geçerlidir.

None maç varsa, o sıfır dönüş değeri olacaktır ve etkili FALSE.

$result = mysql_query($query);

if(mysql_num_rows($result))
{ //-- non-empty rows found fitting your SQL query

  while($row = mysql_fetch_array($result))
  {//-- loop through the rows, 
   //--   each time resetting an array, $row, with the values

  }
}

Eğer sadece veritabanı çekin eğer hangi tüm iyi ve güzel olduğunu. Değiştirmek ya da silmek satırları veritabanından ve bundan etkilenen kaç bilmek istiyorum ...

Bir INSERT, UPDATE tarafından etkilenen satırların sayısını almak için, REPLACE veya DELETE sorgusundan kullanın mysql_affected_rows() .

$result = mysql_query($query);

if(mysql_affected_rows())
{ //-- database has been changed 

}

//-- if you want to know how many rows were affected:
echo 'Rows affected by last SQL query: ' .mysql_affected_rows();

Sorgu başarısız olursa mysql_query() sadece FALSE dönecektir. Bu, hiçbir satır olmasa bile TRUE return, ancak başarılı veritabanı sorgulanır olacaktır.

Ne bu yol hakkında:

$query = "SELECT * FROM members WHERE username = '$_CLEAN[username]'
                                  AND password = '$_CLEAN[password]'";
$result = mysql_query($query);
$result = mysql_fetch_array($result);

//you could then define your variables like:
$username = $result['username'];
$password = $result['password'];

if ($result)
{ ...

Sonuçlar mysql_query döndü ile çok özel olmak için olsun çünkü ben onu seviyorum.

-Ivan Novak

Aşağıdaki kullanılmıştır:

{($! = 0 && mysql_num_rows ($ result) sonuç) if

Sorguda hiçbir şey döndürür eğer bir mantıksal sonucu olacaktır ve değeri 0 olacak.

Bu yüzden bir sıfır ya da değil, eğer kontrol, ve eğer biz bir şey var biliyorum ..

Orada hiçbir şey olduğunda bile Ancak, bazen, bir 1 dönersiniz, bu yüzden orada herhangi bir satır vardır ve tam bir satır orada varsa, bir sonuç iade edilmiştir emin biliyorum eğer SONRA kontrol edin.

iyi ...

tanımı mysql_query göre:

mysql_query() returns a resource on success, or FALSE on error.

Bu işlev sorgu sorunsuz koştu edilmiştir (doğru sözdizimi, vb hala hayatta bağlamak), ancak bu sorgu bazı satır döndüren anlamına gelmez YANLIŞ dışında farklı bir değer döndürür ama ne anlamak gerekir.

örneğin

<?php

$result = mysql_query("SELECT * FROM a WHERE 1 = 0");

print_r($result); // => true

?>

Eğer YANLIŞ olsun eğer öyleyse kullanabilirsiniz

mysql_errorno() ve mysql_error() Ne olduğunu bilmek ..

Bu aşağıdaki ile:

Bir sorgudan satır satır almak için () mysql_fetch_array kullanabilirsiniz