Ne) (mysql_num_rows ile yanlış?

6 Cevap php

Ben bir arkadaş birisi like user to from message için messaged olan kullanıcı adını almak için bu kodu var. mysql_num_rows çalışıyordu ve benim kullanıcı adları bilinmeyen gelip değildir. Bu ile bir ilgisi var mı mysql_num_rows()?

function getusername($userid) {
    $sql = "SELECT username FROM user WHERE `id` = '".$userid."' LIMIT 1";
    $result = mysql_query($sql);
    // Check if there is someone with this id
    if(mysql_num_rows($result)) {
        // if yes get his username
        $row = mysql_fetch_row($result);
        return $row[0];
    } else {
        // if not, name him Unknown
        return "Unknown";
    }
}

6 Cevap

Eğer her mysql_num_rows () kullanmak zorunda değilsiniz. vis:

   function getusername($userid) 
   {
        $sql = "SELECT username FROM user WHERE `id` = '$userid' LIMIT 1";
        $result = mysql_query($sql);
        // Check if there is someone with this id
        if ( $result && ($row = mysql_fetch_row($result)) )
            return $row[0];
        else 
            // if not, name him Unknown
            return "Unknown";
    }

edit: ayrıca, sen dize dışına kaçmak zorunda değilsiniz: "$ kull.." Yerine 'str' arasında "str" ​​formu kullanılmıştır ... Bu yüzden.

Sorguyu yankılanan deneyin ve kimlik düzgün yerleştirilirse, o zaman herhangi bir hata olup olmadığını echo mysql_error() görmek için sorgu çalıştırmak yürüttükten sonra, daha sonra, böyle bir kimlik aslında var olduğundan emin olun bakın. İşte tüm üsleri kapsayacak ve size gereken cevabı vermelidir.

Satır sayısını kontrol etmeden önce, sorgunun başarılı olmadığını kontrol edin:

$result = mysql_query($sql);
if (!$result)
{
     error();  // whatever needs to be done
     return;
}

// Check the number of rows
if (mysql_num_rows($result) > 0) {

Ben uzun bir süre mysql ile çalıştı, bu yüzden worng ediyorsam beni affet değil.

Bu kısıtlama sütun id bir dizeye eşit olup olmadığını görmek için kontrol ediyor gibi geliyor bana

'".$userid."'

id çeşit bir tamsayı ise, bu onay başarısız olabilir. (Yine, ben nedir çalışırken zarar? Yanlış olabilir ama)

Okumak için sorguyu değiştirerek deneyebilirsiniz

$sql = "SELECT username FROM user WHERE `id` = ".$userid." LIMIT 1";

id gerçekten bir dizedir sürece.

Bu yardımcı olur umarım.

http://dev.mysql.com/doc/refman/5.0/en/string-syntax.html

Bir mySQL hata sorgu için orada olmadığını kontrol edebilir. Muhtemelen veritabanına bağlanırken bir sorun vardı.

Geçmişte bağladıktan sonra bir veritabanı seçmek için unutmak için kullanılır.

http://www.php.net/manual/en/function.mysql-error.php

Bu gibi sorunlara küresel çözüm

deneyin:

$sql = "SELECT username FROM user WHERE `id` = '".$userid."' LIMIT 1"; 
echo "Query=$sql";

ve phpmyadmin-> SQL görüntülenen değeri koşmak, onay çalışır mı?