我正在为PHP PDO创建一个简单的查询生成器,以更快地创建查询,而不需要做很多绑定和拆分查询创建过程,其中条件/订单/限制是根据某些条件组合在一起的(如过滤器引擎,您可以在其中选择一些条件)。我有这样的方法:
$query->addWhere( 'uid', '>' , 100 );它添加where条件并将:uid绑定到100,我也可以像这样省略binds:
$query->addWhere( 'date', '>' , 'NOW()' , false );但是我没有带100个参数类型的信息。在执行查询的更深层次上,我不执行bindParam或bindValue,而是将绑定的表传递给execute:
$stmt->execute( $query->getBinds() );我的所有参数是否都被视为PARAM_STR,或者它从数组中的变量类型中获取PDO类型?我能失去什么呢?只有性能/内存,或者可能有一些数据丢失或逻辑错误?
附注:我不想为params创建另一个类,因为我想让它保持简单,我的意思是像这样:
$query->addWhere( new Field('uid') , '=' , new IntParam( 100 ) ); or something发布于 2011-03-12 16:58:03
尽管我看不到这种查询构建器有什么好处(您的收获就像省略了几个单词一样少,损失的就像从宝贵的SQL中生成完全不可读的代码一样多),但答案是否定的:没有损失。
只需关闭模拟模式,PDO就会自动检测到必要的类型。
$dbh->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );https://stackoverflow.com/questions/5281562
复制相似问题