Vorkompilierung und Verständnis von MySQL-Anweisungen in PHP

小云云
Freigeben: 2023-03-21 07:42:01
Original
2855 Leute haben es durchsucht


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:

  1. Vorverarbeitung: Erstellen Sie eine SQL-Anweisungsvorlage und senden Sie sie an die Datenbank. Reservierte Werte werden mit dem Parameter „?“ gekennzeichnet. Zum Beispiel:

  2. INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
    Nach dem Login kopieren
  3. Datenbankanalyse, Kompilierung, Abfrageoptimierung für SQL-Anweisungsvorlagen und Speicherung der Ergebnisse ohne Ausgabe.

  4. 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();
Nach dem Login kopieren

DQL-Vorverarbeitung:

//预处理2--查询数据库
//创建预处理对象
$mysqli_stmt = $mysqli->prepare(&#39;select name,balance from account where id < ?&#39;);
//绑定参数
$id = 5;
$mysqli_stmt->bind_param(&#39;i&#39;,$id);
//执行
$mysqli_stmt->execute();
//绑定结果集
$mysqli_stmt->bind_result($name,$balance);  //这里的变量指向的是内存地址
//输出结果集
while($mysqli_stmt->fetch()){
    echo "$name--$balance";
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage