Diese Prepared Statements werden teils als Heilsbringer angepriesen. Ich habe mir die Sache auch schon einmal angesehen, in der PHP Dokumentation. Doch die ist alles andere als überzeugend. Da werden Prepared Statements mit Objektorientierter Stil und Prozeduraler Stil wild durcheinandergemixt und es bleiben unendlich viele Fragen offen, die auf irgendwelchen Webseiten von irgendwem irgendwie beantwortet werden und am Ende weiß man nicht woran man ist. Ein paar Beispiele.
Man erstellt also ein Prepare Query:
$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)");
der dann anstelle des Platzhalter ? gefüllt werden kann.
$stmt->bind_param("i", $id);
zuletzt dann noch ein
$stmt->execute();
Wieso füllt man den Platzhalter ? Parameter nicht gleich? Wäre doch weniger Aufwand. Zumal, denn jetzt wird es seltsam und komplex:
Wie sieht es aus, wenn mehrere Parameter ge-bind-et werden sollen? Da gehts schon los. Die PHP doc löst die Frage, indem sie Objektorientierten Stil verwendet. Feine Sache!
Was ist mit NULL von PHP nach MySQL? Das scheint simpel zu sein, anscheinend, oder dann doch nicht, weil der bind Typ angegeben werden muss. Hier fehlen mal wieder praktische Beispiele, und es sind nur theoretische zu finden, die fein säuberlich Ziffern anstatt Variablen in Statements verwenden. Wenn ich sowas sehe ist es eh schon aus.
$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')"));
Ja PHP, ich setze mich hin und fülle jedes Statement manuell aus, 24/7, thas my life! Aber nur, weil ich mir keine kleinen Chinesen leisten kann, die in Servern wohnen und das für mich machen würden.
Im Internet findet man dann gleich sowas, womit das bind als deprecated eingestuft werden kann, weil mans eh nicht braucht.
$stmt = $mysqli->prepare("INSERT INTO login(`name`,`password`,`email`,`sex`,`city`) VALUES(?,?,?,?,?)");
$stmt->execute([$name, $pass, $email, $sex, $city]);
Da fehlt dann auch arbeitserleichternd die Angabe eines Typs. Feine Sache! Nur, was ist daran jetzt besser als an Objektorientierter Stil?
Ich belasse es vorerst bei diesem meinem Ausflug zu Prepared Statements sowie diesen meinem Statement dazu. Mich hat es nicht überzeugt.
https://www.php.net/manual/de/mysqli...statements.php
Man erstellt also ein Prepare Query:
$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)");
der dann anstelle des Platzhalter ? gefüllt werden kann.
$stmt->bind_param("i", $id);
zuletzt dann noch ein
$stmt->execute();
Wieso füllt man den Platzhalter ? Parameter nicht gleich? Wäre doch weniger Aufwand. Zumal, denn jetzt wird es seltsam und komplex:
Wie sieht es aus, wenn mehrere Parameter ge-bind-et werden sollen? Da gehts schon los. Die PHP doc löst die Frage, indem sie Objektorientierten Stil verwendet. Feine Sache!
Was ist mit NULL von PHP nach MySQL? Das scheint simpel zu sein, anscheinend, oder dann doch nicht, weil der bind Typ angegeben werden muss. Hier fehlen mal wieder praktische Beispiele, und es sind nur theoretische zu finden, die fein säuberlich Ziffern anstatt Variablen in Statements verwenden. Wenn ich sowas sehe ist es eh schon aus.
$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')"));
Ja PHP, ich setze mich hin und fülle jedes Statement manuell aus, 24/7, thas my life! Aber nur, weil ich mir keine kleinen Chinesen leisten kann, die in Servern wohnen und das für mich machen würden.
Im Internet findet man dann gleich sowas, womit das bind als deprecated eingestuft werden kann, weil mans eh nicht braucht.
$stmt = $mysqli->prepare("INSERT INTO login(`name`,`password`,`email`,`sex`,`city`) VALUES(?,?,?,?,?)");
$stmt->execute([$name, $pass, $email, $sex, $city]);
Da fehlt dann auch arbeitserleichternd die Angabe eines Typs. Feine Sache! Nur, was ist daran jetzt besser als an Objektorientierter Stil?
Ich belasse es vorerst bei diesem meinem Ausflug zu Prepared Statements sowie diesen meinem Statement dazu. Mich hat es nicht überzeugt.
https://www.php.net/manual/de/mysqli...statements.php
Kommentar