我正在为PHP PDO创建一个简单的查询构建器,以便更快地创建查询,而无需根据某些条件(如过滤器引擎)对条件/订单/限制组合在一起的部分进行大量绑定和拆分查询创建过程,您可以在其中选择一些标准)。我有这样的方法:
$query->addWhere( 'uid', '>' , 100 );
添加条件和绑定的地方:uid到100,我也可以像这样omitt bindig:
$query->addWhere( 'date', '>' , 'NOW()' , false );
但我没带100参数类型的信息。在执行查询时,我不执行bindParam或bindValue,而是通过我的绑定表执行:
$stmt->execute( $query->getBinds() );
我的所有参数都被视为PARAM_STR还是从数组中的变量类型获取PDO类型?我能失去什么?只有性能/内存或可能有一些数据丢失或逻辑错误?
P.S。 我不想为params创建另一个类,因为我想保持简单,我的意思是:
$query->addWhere( new Field('uid') , '=' , new IntParam( 100 ) ); or something
答案 0 :(得分:1)
虽然我在这样的查询构建器中看不到什么好处(你只需要省略几个单词就可以获得尽可能少的代码,而不是从宝贵的SQL中输出完全不可读的代码),答案是:没有损失。
只需关闭仿真模式,PDO就会自动检测必要的类型。
$dbh->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );