Examinons d’abord la méthode traditionnelle de fonctionnement d’une base de données.
Il existe deux méthodes traditionnelles d'exploitation des bases de données :
Écrivez d'abord une instruction SQL, puis utilisez mysqli->query($sql ) Pour faire fonctionner la base de données (l'auteur utilise ici la bibliothèque d'extension mysqli). Il n’y a rien de mal à cette opération, mais que se passe-t-il si vous souhaitez insérer des milliers ou des dizaines de milliers de données ? Devons-nous encore écrire une instruction SQL comme celle-ci, puis exploiter la base de données ? Ensuite, certaines personnes diront qu'il est plus facile d'utiliser la propre méthode de MySQLi pour faire fonctionner plusieurs instructions SQL, qui est la deuxième méthode.
mysqli->multi_query($sql), C'est la méthode pour faire fonctionner plusieurs instructions SQL, comme suit :
Si vous pensez que cela peut complètement résoudre le problème, alors C'est faux, jetons un coup d'œil au principe de la base de données MySQL exécutant des instructions SQL !
Comme le montre la figure ci-dessus, que nous envoyions une instruction SQL ou plusieurs instructions SQL, la base de données doit les compiler une par une. Ensuite, lorsque les données atteignent un certain montant, la base de données La base de données. le coût sera énorme. Alors comment résoudre ce problème ? À cette époque, le concept de technologie de prétraitement a été introduit.
Examinons maintenant un morceau de code pour la technologie de prétraitement :
<? = 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();
Regardons d'abord
等等,为什么values会是问号呢?这里的问号相当于一个占位符,之后只要向数据库发送数据就能够自动把数据对应的填充进去 这就是预编译技术的精髓之处,我们通过bind_param,顾名思义,就是绑定参数的意思,那么,它给谁绑定参数呢?看看上面的values (?,?,?,?,?),bind_param里面的参数一一对应 着values的每一个参数。那么bind_param里面的siisd又是什么意思呢?别急,请看下方: 参数有以下四种类型: i - integer(整型) d - double(双精度浮点型) s - string(字符串) b - BLOB(布尔值) 每个参数都需要指定类型。 通过告诉数据库参数的数据类型,可以降低 SQL 注入的风险.
;Ce code sert à transmettre le données à la base de données.
Interroger la base de données à l'aide de données prétraitées
<span style="color: #000000"> 代码如下:<br/> </span>
<?php/** * Created by PhpStorm. * User: Administrator * Date: 2017/7/21 * Time: 9:37 */$mysqli = new mysqli("localhost","root","123456","student"); if($mysqli->connect_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"."<br>"; }//关闭资源$mysqli_stmt->free_result();//关闭预编译语句,否则数据库会一直保存$mysqli_stmt->close();//关闭连接$mysqli->close();
que d'insertion. Alors, que signifie ce code ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!