MYSQLi -Select und Prepared Statements
Lukas
- php
0 dedlfix
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
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!