Page

[php]PDO预处理之后使用execute()绑定参数默认使用PARAM_STR格式

1028Anson17-06-22


所以,当绑定的参数为整型时,不能使用execute(array($id,$pid))的方式绑定参数,而应该使用bindValue(),并设置data_type为PDO::PARAM_INT类型。

PDOStatement::execute

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::execute — 执行一条预处理语句

说明 ¶

bool PDOStatement::execute ([ array $input_parameters ] )

执行预处理过的语句。如果预处理过的语句含有参数标记,必须选择下面其中一种做法:

  • 调用 PDOStatement::bindParam() 绑定 PHP 变量到参数标记:如果有的话,通过关联参数标记绑定的变量来传递输入值和取得输出值

  • 或传递一个只作为输入参数值的数组

参数 ¶

  • input_parameters

  • 一个元素个数和将被执行的 SQL 语句中绑定的参数一样多的数组。所有的值作为 PDO::PARAM_STR 对待。

    不能绑定多个值到一个单独的参数;比如,不能绑定两个值到 IN()子句中一个单独的命名参数。

    绑定的值不能超过指定的个数。如果在 input_parameters 中存在比 PDO::prepare() 预处理的SQL 指定的多的键名,则此语句将会失败并发出一个错误。

返回值 ¶

成功时返回 TRUE, 或者在失败时返回 FALSE