执行查询
当准备好查询并绑定了相应的参数后,就可以通过调用PDOStatement类对象中的execute()方法,反复执行在数据库缓存区准备好的语句了。在下面的示例中,向前面提供的contactInfo表中,使用预处理方式连续执行同一个INSERT语句,通过改变不同的参数添加两条记录
<?php try { //创建对象 $dbh = new PDO("mysql:host=localhost;dbname=testdb", "root", "***"); }catch(PDOException $e) { echo "数据库连接失败:".$e->getMessage(); exit; } $query = "INSERT INTO contactInfo (name,address,phone) VALUES (?,?,?)"; $stmt = $dbh->prepare($query); $stmt->bindParam("1",$name); $stmt->bindParam("2",$address); $stmt->bindParam("3",$phone); $name = '司马'; $address = '西城'; $phone = '666'; $stmt->execute(); $name = '曹操'; $address = '平谷'; $phone = '1'; $stmt->execute(); ?>
<?php try { //创建对象 $dbh = new PDO("mysql:host=localhost;dbname=testdb", "root", "***"); }catch(PDOException $e) { echo "数据库连接失败:".$e->getMessage(); exit; } $query = "INSERT INTO contactInfo (name,address,phone) VALUES (:name,:address,:phone)"; $stmt = $dbh->prepare($query); $stmt->bindParam(":name",$name); $stmt->bindParam(":address",$address); $stmt->bindParam(":phone",$phone); $name = '爱新觉罗'; $address = '东城'; $phone = '88888'; $stmt->execute(); ?>
如果只是要传递输入参数,并且有许多这样的参数要传递,那么通过在execute()方法中提供一个可选参数,该参数是由准备查询中的命名参数占位符组成的数组,这是第二种为预处理查询在执行中替换输入参数的方式。此语法可以活动对bindParam()的调用
<?php try { //创建对象 $dbh = new PDO("mysql:host=localhost;dbname=testdb", "root", "***"); }catch(PDOException $e) { echo "数据库连接失败:".$e->getMessage(); exit; } $query = "INSERT INTO contactInfo (name,address,phone) VALUES (?,?,?)"; $stmt = $dbh->prepare($query); $stmt->execute(array("张飞",'延庆','3')); $query = "INSERT INTO contactInfo (name,address,phone) VALUES (:name,:address,:phone)"; $stmt = $dbh->prepare($query); $stmt->execute(array(":name"=>"关羽",":address"=>"密云",":phone"=>"2")); ?>
如果执行的是INSERT语句,并且数据表有自动增长的ID字段,可以使用PDO对象中的lastInsertId()方法获取最后插入数据表中的记录ID。如果需要查看其他DML语句是否执行成功,可以通过PDOStatement类对象中的rowCount()方法获取影响记录的行数
<?php try { //创建对象 $dbh = new PDO("mysql:host=localhost;dbname=testdb", "root", "***"); }catch(PDOException $e) { echo "数据库连接失败:".$e->getMessage(); exit; } $query = "INSERT INTO contactInfo (name,address,phone) VALUES (?,?,?)"; $stmt = $dbh->prepare($query); $stmt->execute(array("孙权",'通州','123456')); echo $dbh->lastInsertId(); $query = "UPDATE contactInfo SET name=? WHERE uid=?"; $stmt = $dbh->prepare($query); $stmt->execute(array("天使","6")); echo $stmt->rowCount();//1 $query = "DELETE FROM contactInfo WHERE name= ?"; $stmt = $dbh->prepare($query); $stmt->execute(["孙权"]); echo $stmt->rowCount();//11 ?>
原文链接:https://www.qiquanji.com/post/7900.html
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
微信扫码关注
更新实时通知