PDOStatement::bindParam — 綁定一個參數到指定的變數名稱(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )
綁定一個PHP變數到用作預處理的SQL語句中的對應命名佔位符或問號佔位符。 有別於PDOStatement::bindValue() ,此變數作為參考被綁定,並且只在PDOStatement::execute() 被呼叫的時候才取其值。
大多數參數是輸入參數,即,參數以唯讀的方式用來建立查詢。一些驅動支援調用預存程序並作為輸出參數傳回數據,一些支援作為輸入/輸出參數,既發送數據又接收更新後的數據。
parameter參數標識符。對於使用命名佔位符的預處理語句,應是類似:name 形式的參數名稱。對於使用問號佔位符的預處理語句,應是以1開始索引的參數位置。
variable綁定到SQL 語句參數的PHP 變數名稱。
data_type使用PDO::PARAM_* 常數明確地指定參數的型別。要從一個預存程序中傳回INOUT 參數,需要為data_type 參數使用位元或運算子去設定PDO::PARAM_INPUT_OUTPUT 位元。
length預先分配提示。
driverdata資料類型的長度。為表示參數是一個預存程序的OUT 參數,必須明確地設定此長度。
driver_options
成功時回傳TRUE, 或在失敗時回傳FALSE。
<?php/* 透過綁定的PHP 變數執行一條預處理語句*/$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour');$sth->bindParam(':calories', $calories, PDO::PARAM_INT);$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);$sth->execute();?>
<?php/* 透過綁定的PHP 變數執行一條預處理語句*/$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?');$sth->bindParam(1, $calories, PDO::PARAM_INT);$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);$sth->execute();?>
<?php/* 使用INOUT 參數呼叫一個預存程序*/$colour = 'red';$sth = $dbh->prepare('CALL puree_fruit(?)');$sth->bindParam(1, $colour, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);$sth->execute();print("After pureeing fruit, the colour is: $colour");?>