当前位置:   article > 正文

php mysql PDO的使用 in参数拼接及limit分页查询失败问题修改_php pdo in

php pdo in

 1、根据传过来的in的数组生成预处理占位符

2、拼接普通参数与in参数的处理条件

3、设置数据类型,支持分页查询

  1. function get_select(){
  2. $params = [':foo'=>'AAA',':bar'=>'bra',':pos'=>0,':lim'=>10];
  3. $ids = [1,2,3,4,5];
  4. $in = [];
  5. $in_params =[];
  6. //循环in拼接的数据
  7. foreach ($ids as $i=>$y){
  8. $key = ":id".$i;
  9. $in[] = $key;
  10. $in_params[$key] = $y;
  11. }
  12. //生成后类似 :id0,:id1,:id2,:id3,:id4 的数据
  13. $in = implode(',',$in);
  14. //合并数组参数合并后类似得到
  15. /*
  16. Array(
  17. [:name] => AAA
  18. [:bar] => bra
  19. [:id0] => 1
  20. [:id1] => 2
  21. [:id2] => 3
  22. [:id3] => 4
  23. [:id4] => 5
  24. )
  25. */
  26. $map = array_merge($params,$in_params);
  27. $sql = "select * from `table` where `name` = :foo and bar = :bar and id in (".$in.") limit :pos,:lim";
  28. $sth = $db->prepare($sql);
  29. foreach ($map as $key => $value) {
  30. $sth->bindValue($key, $value, select_data_type($value));
  31. }
  32. $sth->execute();
  33. $list = $sth->fetchAll(PDO::FETCH_ASSOC);
  34. return $list;
  35. }
  36. //修改数据类型用于execute limit查询bug
  37. function select_data_type($val)
  38. {
  39. if (is_bool($val)) {
  40. return PDO::PARAM_BOOL;
  41. } elseif (is_int($val)) {
  42. return PDO::PARAM_INT;
  43. } elseif (is_null($val)) {
  44. return PDO::PARAM_NULL;
  45. } else {
  46. return PDO::PARAM_STR;
  47. }
  48. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/139383?site
推荐阅读
相关标签
  

闽ICP备14008679号