php pdo->execute,PHP PDO prepare()、execute()和bindParam()方法詳解

PHP PDO prepare()、execute()和bindParam()方法詳解

每次將查詢發送給MySQL服務器時,都必須解析該查詢的語法,確保結構正確並能夠執行。這是這個過程中必要的步驟,但也確實帶來了一些開銷。做一次是必要的,但如果反復地執行相同的查詢,批量插入多行並只改變列值時會怎么樣呢?預處理語句會在服務器上緩存查詢的語法和執行過程,而只在服務器和客戶端之間傳輸有變化的列值,以此來消除這些額外的開銷。

PDO為支持此特性的數據庫提供了預處理語句功能。因為MySQL支持這個特性,所以可以在適當時使用預處理語句。

預處理語句是使用兩個方法實現的:prepare()方法負責准備要執行的查詢,execute()方法使用一組給定的列參數反復地執行查詢。這些參數可以顯式地作為數組傳遞給execute()方法,也可以使用通過bindParam()方法指定的綁定參數提供給execute()方法。

使用預處理語句——prepare()方法

prepare()方法負責准備要執行的查詢。語法格式如下:PDOStatement PDO::prepare(string statement[,array driver_options])

但是,用作准備語句的查詢與以住使用的查詢略有區別,因為對於每次執行迭代中要改變的值,必須使用占位符而不是具體的列值。

查詢支持兩種不同的語法:命名參數和問號參數。

使用命名參數的查詢如下:INSERT INTO tb_chengji SET xuesheng=:xuesheng,yuwen=:yuwen;

其中,:xuesheng與:yuwen都是列占位符。

使用問號參數的查詢如下:INSERT INTO tb_chengji SET xuesheng=?,yuwen=?;

其中,?也是列占位符。

選擇哪一種語法都可以,但是前者更明確一些。

下面使用prepare()方法准備一個用於迭代執行的查詢:<?php

$pdo=new PDO($dsn,$user,$pwd); // 連接數據庫

$query="INSERT INTO tb_chengji SET xuesheng=:xuesheng,yuwen=:yuwen";

$result=$pdo->prepare($query);

?>

上面的代碼將查詢准備好了。繼續下面的操作。

執行准備查詢——execute()方法

execute()方法負責執行准備好的查詢。語法格式如下:bool PDOStatement::execute([array input_parameters])

該方法需要有每次迭代執行中替換的輸入參數。這可以通過兩種方法實現:作為數組將值傳遞給方法,或者通過bindParam()方法把值綁定到查詢中相應的變量名或位置偏移。

下面介紹第一種方法,第二種方法在bindParam()方法中介紹。

實例代碼中准備了一條語句並通過execute()方法反復執行,每次使用不同的參數:<?php

$pdo=new PDO($dsn,$user,$pwd); // 連接數據庫

$query=

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值