Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysqli:Kann es mehrere Abfragen in einer Anweisung vorbereiten?

Eine vorbereitete Anweisung kann nur eine MySQL-Abfrage ausführen. Sie können beliebig viele Anweisungen in verschiedenen Variablen vorbereiten:

$stmtUser = $sql->prepare("INSERT INTO user (id_user, username, pw, email) VALUES (?,?,?,?)");
$stmtProc = $sql->prepare("INSERT INTO process (id_user, idp) VALUES (?,?);");

Und sie dann später ausführen. Wenn Sie sicherstellen möchten, dass keiner jemals ausgeführt wird, es sei denn, beide können ausgeführt werden, müssen Sie sich Transaktionen ansehen, wie Thomas sagte.

Außerdem ein allgemeiner Tipp:"call to member function on a non-object" ist der Standardfehler, den Sie erhalten, wenn prepare() schlägt fehl und so $stmt ist eigentlich kein vorbereitetes Anweisungsobjekt. Normalerweise bedeutet dies, dass Sie nach einem Fehler in Ihrem prepare() suchen müssen Aussage eher als alles später.