Dieser Artikel vermittelt Ihnen hauptsächlich das Verständnis der Vorkompilierung von MySQL-Anweisungen in PHP. Vorverarbeitungsanweisungen werden verwendet, um mehrere identische SQL-Anweisungen mit höherer Ausführungseffizienz auszuführen. Vorbereitete Anweisungen funktionieren wie folgt:
Vorverarbeitung: Erstellen Sie eine SQL-Anweisungsvorlage und senden Sie sie an die Datenbank. Reservierte Werte werden mit dem Parameter „?“ gekennzeichnet. Zum Beispiel:
INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
Datenbankanalyse, Kompilierung, Abfrageoptimierung für SQL-Anweisungsvorlagen und Speicherung der Ergebnisse ohne Ausgabe.
Ausführung: Schließlich wird der anwendungsgebundene Wert an den Parameter („?“-Markierung) übergeben und die Datenbank führt die Anweisung aus. Die Anwendung kann die Anweisung mehrmals ausführen, wenn die Parameterwerte unterschiedlich sind.
Im Vergleich zur direkten Ausführung von SQL-Anweisungen haben vorbereitete Anweisungen zwei Hauptvorteile:
Vorverarbeitete Anweisungen verkürzen die Analysezeit erheblich und führen nur eine Abfrage durch (obwohl die Anweisung mehrmals ausgeführt wird).
Bindungsparameter reduzieren die Serverbandbreite, Sie müssen nur die Parameter der Abfrage anstelle der gesamten Anweisung senden.
Vorbereitete Anweisungen sind für die SQL-Injection sehr nützlich, da nach dem Senden von Parameterwerten unterschiedliche Protokolle verwendet werden, um die Legitimität der Daten sicherzustellen.
Im Folgenden finden Sie die Vorverarbeitungscodes für DML- (Insert-Delete-Update) und DQL-Anweisungen (Select)
DML-Vorverarbeitung:
//预处理1--操作数据库 $mysqli = new mysqli('localhost','root','mayi1991','mysqldemo'); $mysqli->query('set names utf8'); //创建预编译对象 $mysqli_stmt = $mysqli->prepare("insert account (balance,name) values (?,?)"); //绑定参数 $balance = 122; $name = '小白'; $mysqli_stmt->bind_param("ds",$balance,$name); //$mysqli_stmt->bind_param("ds",122,'小白'); //这样是错误的,我也不知道为啥子 //执行 返回boolean值 $mysqli_stmt->execute();
DQL-Vorverarbeitung:
//预处理2--查询数据库 //创建预处理对象 $mysqli_stmt = $mysqli->prepare('select name,balance from account where id < ?'); //绑定参数 $id = 5; $mysqli_stmt->bind_param('i',$id); //执行 $mysqli_stmt->execute(); //绑定结果集 $mysqli_stmt->bind_result($name,$balance); //这里的变量指向的是内存地址 //输出结果集 while($mysqli_stmt->fetch()){ echo "$name--$balance"; }
Verwandte Empfehlungen:
Detaillierte Einführung in MySQL-Anweisungen
Methoden zur Implementierung der MySQL-Anweisungssperre
Ausführliches Tutorial zum Erstellen von Datentabellen mit MySQL-Anweisungen
Das obige ist der detaillierte Inhalt vonVorkompilierung und Verständnis von MySQL-Anweisungen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!