2016-07-15 7 views
0

Ich versuche, das Ergebnis aus meiner Datenbanktabelle tbl_newpage zu erhalten, aber es wird ein Fehler ausgegeben. Ich weiß nicht, warum es Fehler wirftSchwerwiegender Fehler: Objekt des Typs mysqli_result kann nicht als Array verwendet werden

Die folgende Zeile

$page = $mysqli->real_escape_string($_GET['page']); 

    $result=array(); 

    if($stmt = $mysqli->prepare("select * from tbl_newpage where name=?")){ 

    $stmt->bind_param("s", $page); 

    $stmt->execute(); 

    $result = $stmt->get_result(); 

    while($row = $result->fetch_array()){ 

     $result[] = array($row); //This is where the error appears 
       echo "hello ";print_r($row);die(); 

    } 

    $objSmarty->assign("result", $result); 
    } 

Fehler Wirft

Fatal error: Kann nicht 22 in /var/www/html/examplesite/phpfile.php on line

+0

Kommentar im Code der Fehlerzeile hinzufügen –

+3

Ändern Sie '$ result []' array in einen anderen Namen, etwa '$ data' weil' $ result' Array-Speicherwert von 'get_result()' – Saty

+0

@Saty Vielen Dank sehr viel – scriptkiddie

Antwort

2

Sie verwenden die gleiche Variable $result für das Ergebnis $stmt->get_result() und das Array der Werte, die Sie abrufen. So auf der zweiten Iteration der Schleife, wenn es

$row = $result->fetch_array() 

$result nicht mehr tut enthält das mysqli Ergebnis, es enthält das Array, und Sie können fetch_array() auf einem Array nicht nennen. Verwenden Sie verschiedene Variablennamen für sie.

$output = array(); 
while ($row = $result->fetch_array()) { 
    $output[] = $row; 
} 
$objSmarty->assign("result", $output); 

Auch $row ist bereits ein Array, Sie wollen wahrscheinlich nicht zu nisten sie in einem anderen Array, bevor es auf die $output Array schieben.

+0

es ist eine sehr schöne Erklärung, aber die While-Schleife fehlt Schließen) – scriptkiddie

2

Try Objekt vom Typ MySQLi_Result als Array verwenden durch Ändern des endgültigen result als finalResult

$page = $mysqli->real_escape_string($_GET['page']); 

$finalResult=array(); 

if($stmt = $mysqli->prepare("select * from tbl_newpage where name=?")){ 

$stmt->bind_param("s", $page); 

$stmt->execute(); 

$result = $stmt->get_result(); 

while($row = $result->fetch_array()){ 

    $finalResult[] = array($row); 
      echo "hello ";print_r($row);die(); 

} 

$objSmarty->assign("result", $finalResult); 
} 
+0

Danke, das ist das Problem – scriptkiddie

Verwandte Themen