首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是bindValue错了吗?

这是bindValue错了吗?
EN

Stack Overflow用户
提问于 2012-10-01 15:06:37
回答 1查看 144关注 0票数 0

我有一个follows(AFAIKPDO statement,因为PDO statement不需要数据作为escaped进行准备):

代码语言:javascript
复制
$insert = "INSERT INTO `errors`(`code`,`number`,`title`,`message`) VALUES( :code, :num, :title, :err )";
$arr = Array(
    Array( ':code', $_POST['code'], 'PDO::PARAM_STR' ),
    Array( ':num', $_POST['number'], 'PDO::PARAM_INT' ),
    Array( ':title', $_POST['title'], 'PDO::PARAM_STR' ),
    Array( ':err', htmlentities( str_replace("\n", "<br />", $_POST['error']), ENT_HTML5, 'UTF-8' ), 'PDO::PARAM_STR' )
);
$stmt = $conn->prepare($insert);
foreach( $arr as $a ) {
    $stmt->bindValue( $a[0], $a[1], $a[2] );
}
$stmt->execute();
$stmt->debugDumpParams();

这段代码什么也不做。但它确实生成了这样一个转储:

代码语言:javascript
复制
SQL: [91] INSERT INTO `errors`(`code`,`number`,`title`,`message`) VALUES( :code, :num, :title, :err )
Params:  0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-01 15:08:56

绑定参数的类型信息是constant,而不是字符串。

代码语言:javascript
复制
Array( ':code', $_POST['code'], PDO::PARAM_STR )
//                             ^              ^ no quotes

更新

数组应该如下所示:

代码语言:javascript
复制
$arr = Array(
    Array( ':code', $_POST['code'], PDO::PARAM_STR ),
    Array( ':num', $_POST['number'], PDO::PARAM_INT ),
    Array( ':title', $_POST['title'], PDO::PARAM_STR ),
    Array( ':err', htmlentities( str_replace("\n", "<br />", $_POST['error']), ENT_HTML5, 'UTF-8' ), PDO::PARAM_STR )
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12675914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档