因为公司项目开发使用的是phalcon3.4框架,经常需要手动批量插入,删除,或者更新一些数据。虽然,好像phalcon框架有phql,但是,好像没那么好用,例如,在执行update操作之前都会先查询一次。造成没必要的性能开支。而且,好像也不支持绑定数组参数。想起之前用的laravel框架,批量删除、更新、插入。简直容易得不是问题。所以,就抽空到网上查了些相关资料,参考了下CI的源码和一篇博文的一个写法(好像找不到原文了,不好意思,如果博主看到的话,联系我补充上参考链接)。写了个扩展函数,可以直接extends Model,对Model直接进行执行例如update、delete、insert 等SQL语句进行批量绑定参数及操作,防止SQL注入问题,也可避免手动拼接SQL语句之类的危险操作。直接附上以下源码:
/** * 可绑定参数执行原生SQL语句,扩展Phalcon框架,PDO绑定参数功能,可绑定数组参数。 * @param $sqlSegment * @param $bindParams {需要绑定参数的数组,数组参数用:({param1})表示,单个参数用 :param2 表示,例如: "UPDATE table_name SET status = :status WHERE id IN ({Ids}) AND status != :deleted_status"} * @param $bindTypes {需要对应绑定参数类型的数组,类型:\PDO::PARAM_ ,如 整数型:\PDO::PARAM_INT } * @return array {返回SQL执行结果execute_result以及执行SQ