Lukas: MYSQLi -Select und Prepared Statements

Hallo,

ich versuche gerade eine standard MYSQL Abfrage in eine MYSQLi Abfrage zu wandeln. Scheinbar habe ich aber noch probleme mit den prepared Statements.

Vielleicht aber einfach ein Praxisbeispiel:

$sql = "  
SELECT * FROM data WHERE  
min <= $min AND max >= $max  
ORDER BY name ASC  
";  
  
while($row = mysql_fetch_object($sql))  
  {  
   echo $row->name;  
   echo $row->preis;  
  }

Meine Mysqli Interpretation heißt dann

$sql = "  
SELECT * FROM data WHERE  
min <= ? AND max >= ?  
ORDER BY name ASC  
";  
$result->bind_param('??', $min,$max);  
$result = $db->query($sql);  
if (!$result) {  
    die ('Konnte den Folgenden Query nicht senden: '.$sql."<br />\nFehlermeldung: ".$db->error);  
}  
if (!$result->num_rows) {  
    echo '<p class="info">Leider konnten wir kein passenden Eintrag für sie finden.</p>';  
} else {  
  
    while ($row = $result->fetch_assoc()) {  
	echo .$row['name']."\n";  
        echo .$row['preis']."\n";  
    }  
}  

Scheinbar habe ich aber die Einbindung von Prepared Statements falsch verstanden denn die ? werden nicht ersetzt mit den entsprechenden Werten wie ich sie unter $result->bind_param vorgegeben habe nicht eingetragen werden.

Danke für eure Hilfe
Lukas

  1. Hi!

    Meine Mysqli Interpretation heißt dann

    [code lang=php]$sql = "
    SELECT * FROM data WHERE
    min <= ? AND max >= ?
    ORDER BY name ASC
    ";
    $result->bind_param('??', $min,$max);
    $result = $db->query($sql);

    Prepared Statements mit mysqli geht anders. Bitte schau dir die Seiten im PHP-Handbuch an, beispielsweise die zu mysqli_stmt::bind_param(), denn die zeigt dir zum einen, dass bind_param() Buchstaben als ersten Parameter erwartet und zum anderen, welche Reihenfolge der Funktionen einzuhalten ist. Die dortigen Beispiele zeigen das für INSERT, aber auch für SELECT-Statements gibt es bei den beteiligten Funktionen Beispiele. Unter See also findest du alle anderen Funktionen, dir auch noch irgendwie mit der gerade dokumentierten in Zusammenhang stehen.

    Lo!