Ne php mysqli'nin nesi?

3 Cevap php

Ben PHP4'te kod kullanılır ama şimdi ben php5 için açık ve aşağıdaki kod aşağıda istisna atar. Neden ki?

KOD:

$mysqli = new mysqli($CONFIG_DB_HOST,$CONFIG_DB_USERNAME,$CONFIG_DB_PASSWORD,$CONFIG_DB_NAME); 
$result = $mysqli->query("select * from temp_table where url = '" . $mysqli->real_escape_string($in_url) . "'");
$row = $result->fetch_assoc();
$out_title = $row['title'];

İstisna:

Fatal error: Call to a member function fetch_assoc() on a non-object in detail.php on line 13

3 Cevap

Sorgunuzla ve sonucunda bazı sorun var gibi görünüyor query() yöntem döndürür false yerine result object ve bir {[çağırdığınızda ( Bu hatayı almaya olmayan bir nesne üzerinde 3)]} yöntemi. Yürütülüyor sorgu yazdırmak ve diyelim ki phpmyadmin çalıştırmak için deneyin ve ne olsun hata görüyorum.

Ayrıca her zaman devam etmeden önce sorgu () yönteminin dönüş değerini kontrol edin:

if (!$mysqli->query("query")) 
{
    printf("Error: %s\n", $mysqli->error);
}

Ayrıca $ sonuç gerçek bir sonucu içeren olmadığını görmek için kontrol edebilirsiniz:

if ($result != false) {
    $row = $result->fetch_assoc();
}else{
    // do something else!
    // maybe trigger_error()?
}

Ayrıca sonuç birden fazla satır içeriyorsa, büyük olasılıkla bir döngü çalıştırmak isteyeceksiniz unutmayın

while ($row = $result->fetch_assoc()) {
    $out_title = $row['title'];
}

Bunu yaparken de while döngüsü $ result-> fetch_assoc dönüş değerini değerlendirecek çünkü $ satıra atar önce $ false satırını set geçmez dönerse, (), sen var ki hatayı alıyorum sizi tutmak ve edecek döngü çalışmaz iken.

Şunları yapabilirsiniz:

<?php
    if ($result = $mysqli->query($query)) {

        /* fetch associative array */
        while ($row = $result->fetch_assoc()) {
          //more things
        }
    }