İşlev doğru kaynak dönmez

4 Cevap

Ben bu işlevi vardır:

function query_dp($sql) {
    $link = mysql_connect('localhost', $bd_id, $bd_pass);
    mysql_select_db("$bd");

    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }

    return mysql_query($sql) or die(mysql_error());

    mysql_close($link);
}

Ana programda, ne zaman yapmaya çalışın:

echo mysql_num_rows(query_db($sql));

Ben iade olarak alabilirsiniz

1

Ben bir işlevi bu kodu saklanması ve ana programa doğrudan kullanmayın, ben getirilen satır sayısını almak.

Fonksiyonu bir kaynak ama ... tamsayı dönen değil? WTF?

Herhangi bir yardım büyük mutluluk duyacağız!

4 Cevap

Muhtemelen küresel scope beyan ve yerel değil beri değişkenler $bd_id, $bd_pass ve $bd işlevin içinde görünür değil bu işlev kapsamı.

Sen global anahtar , by using the $GLOBALS değişken , or by passing them to the function ile global değişkenler erişilebilir yapmak istiyorsunuz ya.

Sorunu "veya" operatörü bulunmaktadır. . Işlev döner 1 veya 0 Ben böyle bir şey kullanmak olduğunu vurgulamaktır "mysql_query ($ sql) or die (mysql_error ())" ifadesi, sonuç:

$query_result = mysql_query($sql);
if (!$query_result) {
    die(mysql_error());
}
return $query_result;

Ayrıca bu fonksiyonunun son satırı "mysql_close ($ link)" asla denir.

Bu doğrudan cevap vermez, ama orijinal mysql arayüzü kullanmak gerekir. aksak ve prosedürel olduğunu. mysqli interface bir göz atın. D: Bu zaten yapan bir dil desteklenen standart varsa eski fonksiyonlarını sarmak kalkmayın

Yukarıdaki kod sadece olur

$m = new MysqlI(...);
$rc = $m->query(...);
echo $rc->num_rows();

mysql_close için çağrı artık size mysql_num_rows ihtiyacınız mysql kaynak bağlantı var demektir