首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将所有PDO参数绑定为PARAM_STR会有什么损失?

将所有PDO参数绑定为PARAM_STR会有什么损失?
EN

Stack Overflow用户
提问于 2011-03-12 16:46:11
回答 1查看 474关注 0票数 1

我正在为PHP PDO创建一个简单的查询生成器,以更快地创建查询,而不需要做很多绑定和拆分查询创建过程,其中条件/订单/限制是根据某些条件组合在一起的(如过滤器引擎,您可以在其中选择一些条件)。我有这样的方法:

代码语言:javascript
复制
$query->addWhere( 'uid', '>' , 100 );

它添加where条件并将:uid绑定到100,我也可以像这样省略binds:

代码语言:javascript
复制
$query->addWhere( 'date', '>' , 'NOW()' , false );

但是我没有带100个参数类型的信息。在执行查询的更深层次上,我不执行bindParam或bindValue,而是将绑定的表传递给execute:

代码语言:javascript
复制
$stmt->execute( $query->getBinds() );

我的所有参数是否都被视为PARAM_STR,或者它从数组中的变量类型中获取PDO类型?我能失去什么呢?只有性能/内存,或者可能有一些数据丢失或逻辑错误?

附注:我不想为params创建另一个类,因为我想让它保持简单,我的意思是像这样:

代码语言:javascript
复制
$query->addWhere( new Field('uid') , '=' , new IntParam( 100 ) ); or something
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-12 16:58:03

尽管我看不到这种查询构建器有什么好处(您的收获就像省略了几个单词一样少,损失的就像从宝贵的SQL中生成完全不可读的代码一样多),但答案是否定的:没有损失。

只需关闭模拟模式,PDO就会自动检测到必要的类型。

代码语言:javascript
复制
$dbh->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5281562

复制
相关文章

相似问题

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