ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# PDOStatement::bindParam PDOStatement::bindParam — 绑定一个参数到指定的变量名(PHP 5 &gt;= 5.1.0, PECL pdo &gt;= 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(); ?> ``` ### 使用 INOUT 参数调用一个存储过程 ``` <?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"); ?> ```