友情提示:本文共有 643 个字,阅读大概需要 2 分钟。
PDO提供对预处理语句的支持。
预处理语句是预先将一个预处理的sql语句发送到数据库服务器,执行其他sql语句只是修改预处理语句里对应的参数。简单的说,就是将sql语句强制一分为二:第一部分为前面相同的命令和结构部分,第二部分为后面可变的数据部分。预处理语句,可以减轻数据库服务器压力。
定义预处理语句
使用prepare()方法执行sql预处理语句,得到一个PDOStatement实例,sql预处理语句通常有如下两种定义方式:
命名参数:自定义的有意义的字符串作为命名参数,前面加上冒号。insert into table_name(name,password,email) values(:name,:password,:email)
问号数据占位符:使用“?”作为参数。insert into table_name(name,password,email) values(?,?,?)
绑定参数
往预处理语句绑定参数有三种方法:
bindParam()方法一个一个绑定,绑定完成执行execute()方法使之生效。bindValue()方法一个一个绑定,绑定完成执行execute()方法使之生效。直接使用execute()方法传递一个数组,命名参数使用关联数组,数据占位符使用索引数组。"; $dbms = "mysql"; $server = "localhost"; $username = "root"; $password = "123456"; $dbname = "account_pdo_db"; $dsn = "$dbms:host=$server;dbname=$dbname"; try { $pdo = new PDO ( $dsn, $username, $password ); echo "PDO连接MySQL数据库服务器成功"; // 数据占位符 $pre = $pdo->prepare("insert into account(username, password, email) values (?,?,?)"); $name = "Peter"; $pwd = "333333"; $pre->bindParam ( 1, $name ); $pre->bindValue ( 2, $pwd ); $pre->bindValue ( 3, "Peter@example.com" ); $pre->execute (); $name = "张三"; $pre->execute (array($name,"1245","zhangsan@example.com")); // 命名参数 $pre = $pdo->prepare("insert into account(username, password, email) values (:name,:pwd,:email)" ); $name = "老王"; $pwd = "00544abc"; $email = "laowang@example.com"; $pre->bindParam ( ":name", $name ); $pre->bindParam ( ":pwd", $pwd ); $pre->bindParam ( ":email", $email ); $pre->execute(); $name = "柴科夫斯基"; $pre->execute(array(":name"=>$name,":pwd"=>"love",":email"=>"abc@abc.com")); $pdo = null; } catch ( PDOException $e ) { echo "PDO连接MySQL数据库服务器失败"; die(); }?>
想了解更多精彩内容,快来关注申霖
PHP操作MySQL-其他「程序员培养之路第四十九天」
PHP操作MySQL-访问数据库「程序员培养之路第四十八天」
PHP操作MySQL-介绍和配置「程序员培养之路第四十七天」
本文如果对你有帮助,请点赞收藏《PHP操作MySQL-预处理语句「程序员培养之路第五十天」》,同时在此感谢原作者。