Her zaman olsun ...
"Uyarı: mysqli_fetch_object (), parametre 1'in mysqli_result olmasını bekler, boolean verilir"
... büyük olasılıkla sorgunuzla ilgili bir sorun var. prepare()
Veya query()
kudreti dönüş FALSE
(Boole), ancak bu genel başarısızlık mesajı ipuçları yolunda çok teşekkür bırakmaz. Sorgunuzda neyin yanlış olduğunu nasıl öğrenebilirsiniz? Siz isteyin !
Her şeyden önce, hata raporlamanın açık ve görünür olduğundan emin olun: bu iki satırı açılış <?php
etiketinizden hemen sonra dosyalarınızın üstüne ekleyin :
error_reporting(E_ALL);
ini_set('display_errors', 1);
Hata raporunuz php.ini dosyasında ayarlanmışsa, bu konuda endişelenmenize gerek kalmaz. Hataları incelikle ele aldığınızdan emin olun ve kullanıcılarınız için herhangi bir sorunun gerçek nedenini asla açıklamayın. Kamunun gerçek nedenini ortaya çıkarmak, sitelerinize ve sunucularınıza zarar vermek isteyenler için altın oyulmuş bir davetiye olabilir. Tarayıcıya hata göndermek istemiyorsanız, web sunucusu hata günlüklerinizi her zaman izleyebilirsiniz. Günlük konumları sunucudan sunucuya değişecektir, örneğin Ubuntu'da hata günlüğü genellikle adresinde bulunur /var/log/apache2/error.log
. Bir Linux ortamında hata günlüklerini inceliyorsanız, tail -f /path/to/log
hataları gerçek zamanlı olarak meydana geldikçe veya yaptığınız gibi görmek için bir konsol penceresinde kullanabilirsiniz.
Veritabanı bağlantınız ve sorgularınız üzerinde hata denetimi ekleyerek standart hata raporlamasıyla karşılaştığınızda, devam eden sorunlar hakkında size daha fazla ayrıntı verecektir. Sütun adının yanlış olduğu bu örneğe bir göz atın. İlk olarak, genel ölümcül hata mesajını döndüren kod:
$sql = "SELECT `foo` FROM `weird_words` WHERE `definition` = ?";
$query = $mysqli->prepare($sql)); // assuming $mysqli is the connection
$query->bind_param('s', $definition);
$query->execute();
Hata geneldir ve neler olup bittiğini çözmede size çok yardımcı olmaz.
Birkaç kod satırı ile sorunu hemen çözmek için kullanabileceğiniz çok ayrıntılı bilgi alabilirsiniz . prepare()
İfadenin doğruluğunu kontrol edin ve eğer iyiyse, bağlayıcı ve yürütmeye devam edebilirsiniz.
$sql = "SELECT `foo` FROM `weird_words` WHERE `definition` = ?";
if($query = $mysqli->prepare($sql)) { // assuming $mysqli is the connection
$query->bind_param('s', $definition);
$query->execute();
// any additional code you need would go here.
} else {
$error = $mysqli->errno . ' ' . $mysqli->error; // 1054 Unknown column 'foo' in 'field list'
// handle error
}
Bir şeyler yanlışsa, sizi doğrudan soruna götüren bir hata mesajı gönderebilirsiniz. Bu durumda, foo
tabloda sütun yoktur , sorunu çözmek önemsizdir.
İsterseniz, bu denetimi bir işleve veya sınıfa dahil edebilir ve hataları daha önce belirtildiği gibi incelikle işleyerek genişletebilirsiniz.