Heim  >  Artikel  >  Backend-Entwicklung  >  Tipps zur MySQL-Vorverarbeitungstechnologie

Tipps zur MySQL-Vorverarbeitungstechnologie

一个新手
一个新手Original
2017-09-13 09:48:351549Durchsuche

Schauen wir uns zunächst die traditionelle Methode zum Betrieb einer Datenbank an.

Es gibt zwei traditionelle Methoden zum Betreiben von Datenbanken:

  1. Schreiben Sie zuerst eine SQL-Anweisung und verwenden Sie dann mysqli->query($sql ) Um die Datenbank zu betreiben (der Autor verwendet hier die MySQLi-Erweiterungsbibliothek). An diesem Vorgang ist nichts auszusetzen, aber was ist, wenn Sie Tausende oder Zehntausende Datenelemente einfügen möchten? Müssen wir noch eine solche SQL-Anweisung schreiben und dann die Datenbank betreiben? Dann werden einige Leute sagen, dass es einfacher ist, die MySQL-eigene Methode zum Ausführen mehrerer SQL-Anweisungen zu verwenden, die zweite Methode.

  2. mysqli->multi_query($sql), Dies ist die Methode zum Ausführen mehrerer SQL-Anweisungen wie folgt:

Wenn Sie glauben, dass dies das Problem vollständig lösen kann, dann Sie Das ist falsch. Schauen wir uns das Prinzip der MySQL-Datenbank zur Ausführung von SQL-Anweisungen an!

  Wie aus der obigen Abbildung ersichtlich ist, muss die Datenbank unabhängig davon, ob wir eine SQL-Anweisung oder mehrere SQL-Anweisungen senden, diese einzeln kompilieren Die Kosten werden riesig sein. Wie kann man dieses Problem lösen? Zu dieser Zeit wurde das Konzept der Vorverarbeitungstechnologie eingeführt.

Schauen wir uns nun einen Code für die Vorverarbeitungstechnologie an:

 <?         =  mysqli("localhost", "root", "123456", "student"  (->     ("连接失败" . ->  ->query("set names utf8"  = "insert into student_info(name,age,sex,studentNo,grade) values (?,?,?,?,?)"   = ->prepare(   = "张三"  = 30  = 0;  = "1501222"  = 89 
 ->bind_param("siisd", , , , ,   ->  ->close();

Schauen wir uns zunächst

  
  等等,为什么values会是问号呢?这里的问号相当于一个占位符,之后只要向数据库发送数据就能够自动把数据对应的填充进去

  这就是预编译技术的精髓之处,我们通过bind_param,顾名思义,就是绑定参数的意思,那么,它给谁绑定参数呢?看看上面的values (?,?,?,?,?),bind_param里面的参数一一对应

着values的每一个参数。那么bind_param里面的siisd又是什么意思呢?别急,请看下方:

  参数有以下四种类型: 
  i - integer(整型) 
  d - double(双精度浮点型) 
  s - string(字符串) 
  b - BLOB(布尔值) 
  每个参数都需要指定类型。 
  通过告诉数据库参数的数据类型,可以降低 SQL 注入的风险.

an;Dieser Code dient zur Übergabe des Daten in die Datenbank.

Datenbank mithilfe vorverarbeiteter Daten abfragen

<span style="color: #000000">  代码如下:<br>  </span>


d7142f12e3aaf4023d724e093ce2bf68connect_error){    
 die("连接失败".$mysqli->error);
}
$mysqli->query("set names utf8");
$sql="select name,sex,age from student_info where id>?";
$mysqli_stmt=$mysqli->prepare($sql);
$id=1;$mysqli_stmt->bind_param("i",$id);
$mysqli_stmt->execute();//绑定结果集,传递的是引用$mysqli_stmt->bind_result($name,$sex,$age);
while($mysqli_stmt->fetch()){    
    echo "$name--$sex--$age"."0c6dc11e160d3b678d68754cc175188a";
}//关闭资源$mysqli_stmt->free_result();//关闭预编译语句,否则数据库会一直保存$mysqli_stmt->close();//关闭连接$mysqli->close();
Es ist ersichtlich, dass die Abfrage mehr Code wie

als Einfügung enthält. Was bedeutet dieser Code?

Wie Sie sich vorstellen können, gibt die Datenbank beim Abfragen der Datenbank unweigerlich einen Ergebnissatz zurück. Wenn Sie also einige Daten zum Ergebnis erhalten möchten, müssen Sie diesen Satz hinzufügen. Was bedeuten diese Parameter?

Wenn Sie sich diese SQL-Anweisung ansehen, werden Sie feststellen, dass die Parameter in bind_result den Feldern (Name, Geschlecht, Alter) entsprechen, die Sie in der SQL-Anweisung abfragen möchten Natürlich müssen die Parameter in bind_result nicht mit den Feldnamen der SQL-Anweisung übereinstimmen, wir empfehlen dies jedoch normalerweise.

Nicht viel zu sagen, das Bild oben:

kann so verstanden werden: $name, $sex, $age werden als Referenz übergeben, sie sind äquivalent zu Zeigern. Bei jeder Ausführung der while-Anweisung bewegt sich der Zeiger nach unten

So können die Daten jeder Zeile ausgedruckt werden:

Vergessen Sie dabei nicht diese drei Verschlüsse, sie sind die obersten Priorität.

Das obige ist der detaillierte Inhalt vonTipps zur MySQL-Vorverarbeitungstechnologie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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