MySQLi Hazırlanan Açıklama Düzgün bağlayıcı değil

2 Cevap php

Aşağıdaki kod çalışmaz herhangi bir neden?

$dbconnection = db::getInstance();  //this is a singleton db class

$stmt = $dbconnection->prepare("SELECT `id` from `table` where `username`=?");
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->bind_result($uid);
$stmt->fetch();

echo $uid;

Aynı bağlantı yöntemi başka yerlerde kullanılan ve orada çalışır. Çalıştığını, diğer sayfadaki tek fark, getirilen birden çok satır tek, yok olmasıdır.

edit: Ben hiçbir hata mesajı alıyorum. echo $ uid sadece çıkış şey değil. (Evet, DB bu sorgu düzgün çalışır, onu test) DB kullanıcının kimliğini yankı gerekiyordu.

Eğer hemen bir sorun göremiyorum eğer bu hata ayıklamak için iyi bir yol önerebilirsiniz?

edit: Tried switching execute() and bind_result() positions, with no difference.

edit I finally got an error/warning:

* Uyarı: mysqli_stmt :: mysqli_stmt () [mysqli-stmt.mysqli-deyim]: db alınamadı *

SOLVED

Tamam. Ben sorunu çözüldü. Sana bir tek sınıf kullanırken db bağlantısını kapatmak gerekiyordu sanırım? Ben bunun farkında değildim. Sorun "günlük" fonksiyonu çağrıldığını sonra, ben bir $ DBConn-> close () yaptım, oldu; Ve daha sonra ben aynı örneği kapma, bu yüzden db bağlantı kapatıldı.

2 Cevap

SOLVED

Tamam. Ben sorunu çözüldü. Sana bir tek sınıf kullanırken db bağlantısını kapatmak gerekiyordu sanırım? Ben bunun farkında değildim. Sorun "günlük" fonksiyonu çağrıldığını sonra, ben bir $ DBConn-> close () yaptım, oldu; Ve daha sonra ben aynı örneği kapma, bu yüzden db bağlantı kapatıldı.

Ben her zaman her veritabanı çağrısında dönüş değerlerini kontrol etmek için deneyin ... Bunlardan en az bir başarı / başarısızlık boolean dönmek. Ve dönüş değeri ne beklediğiniz değilse anlaşılır bir şey yaymak için mysqli-> hata kullanabilirsiniz. İşte bir örnek:

  $stmt->bind_result($uid)
     or die("Error binding result - ".$stmt->error) ;

Bunu yaparken hakkında en iyi şey, size hata ayıklama kodu bırakabilirsiniz, ve garip bir veritabanı bağlantı sorunu falan hiç varsa o sorunu daralma yararlı olacaktır.