2016-03-26 9 views
0

ich folgende Testskript haben alle meine aktuellen Programme mit Prepared Statements anpassen ... kann nicht die richtige Syntax/Struktur finden die Ergebniszeilen zu lesen:Zurück Ergebnisse Select * Abfrage mit Prepared Statements

$userid = "admin"; 
    $stmt = mysqli_stmt_init($link); 
    if (mysqli_stmt_prepare($stmt, 'SELECT * FROM user_info WHERE userid = ?')) { 
     mysqli_stmt_bind_param($stmt, "s", $userid); 
     mysqli_stmt_execute($stmt); 
     $result = mysqli_stmt_store_result($stmt); 
     $number_of_rows = mysqli_stmt_num_rows($stmt); 
     echo "Number of Rows: $number_of_rows<br />"; 
     $result = mysqli_stmt_get_result($stmt); 
     for($i=0;$i<$number_of_rows;$i++){ 
      $row = mysqli_fetch_array($result, MYSQLI_ASSOC); 
      echo $row["id"]; 
     } 
     mysqli_stmt_close($stmt); 
    } 
    else{ 
     // Catch a database error here 
     die("Could not query database."); 
    } 

Wie referenziere ich das Ergebnis korrekt (mit prozeduralen)?

+0

Bitte, gehen php.net Website lesen. Sie werden viele Beispiele finden. –

+0

Ich habe das Internet einschließlich PHP Handbücher durchforstet. Es gibt kein Beispiel für das von mir beschriebene Szenario und keine Erklärung, dass dies nicht möglich ist. Ich habe einige gelesen, die sagen, dass es eine schlechte Form ist und ich sage, dass ich zur Verwendung von PDO oder einer objektorientierten Struktur wechseln sollte. Aber wenn es in OO möglich ist, dann sollte es auch in prozeduraler mit korrekter Syntax sein. –

Antwort

0

Try this:

$userid = "admin"; 
$stmt = mysqli_stmt_init($link); 
if (mysqli_stmt_prepare($stmt, 'SELECT * FROM user_info WHERE userid = ?')) { 
    mysqli_stmt_bind_param($stmt, "s", $userid); 
    mysqli_stmt_execute($stmt); 
    $result = mysqli_stmt_store_result($stmt); 
    $number_of_rows = mysqli_stmt_num_rows($stmt); 
    echo "Number of Rows: $number_of_rows<br />"; 
    $result = mysqli_stmt_get_result($stmt); 

    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) 
     echo $row["id"]; 
    } 

    mysqli_stmt_close($stmt); 
} 
else{ 
    // Catch a database error here 
    die("Could not query database."); 
} 

Blick auf PHP-Handbuch für get-Ergebnisfunktion: http://php.net/manual/en/mysqli-stmt.get-result.php (Beispiel # 2 Verfahren Stil)

+0

Ich schätze die Antwort. Ich habe die while-Schleife ausprobiert und kein Ergebnis. Wenn ich das Sternchen (*) in der Abfrage durch "id" ersetze, funktioniert es gut. Aber ich muss in der Lage sein, mehr als nur die ID zu referenzieren. –

Verwandte Themen