2016-05-15 5 views
1

Bitte beschäme mich. Was ist hier nicht richtig? Ich habe auf etwas wie -> fetch_all (Opt) gehofft, einen einzigen Liner, um alle Ergebnisse in ein Array zu bringen, aber es konnte nicht funktionieren. Dies ist, was ich tun liquidiert:mysql -> fetch_all() funktioniert nicht

$s = "select id, username from users"; 
    $conn = db_connect(); 
    $sth = $conn->prepare($s); 
    $sth->execute(); 
    $sth->bind_result($id, $un); 
    $ida = array(); 
    while ($sth->fetch()) { 
    $ida[] = $id; 
    } 

I

versucht

$r = $sth->fetch_all() (versucht, die Zuordnung und keinen Rückgabewert zuweisen), die beide mit und nicht mit ->bind_result() aber beide gescheitert. Was mache ich falsch?

Antwort

2

Zunächst, stellen Sie sicher, dass Sie mysqlnd auf Ihrer Umgebung haben.

Um ->fetch_all() zu verwenden, müssen Sie zuerst die Methode ->get_result() verwenden.

Hier ist die Reihenfolge:

$s = "select id, username from users"; 
$conn = db_connect(); 
$sth = $conn->prepare($s); 
$sth->execute(); 
$data = $sth->get_result(); // get result first 
$result = $data->fetch_all(MYSQLI_ASSOC); // then fetch all 
print_r($result); 
+0

Vielen Dank. Es ist immer eine Kleinigkeit und wenn du herausfindest was es ist ... doh! Danke noch einmal. – user116032

+0

@ user116032 sicher froh, dass dies half – Ghost

+1

nur für den Abschluss: http://StackOverflow.com/Questions/1475701/How-to-know-if-mysqlnd-is-the-active-driver – user116032