有关ecshop的include\cls_mysql.php的一个改进
2016-07-07 15:03 来源:www.chinab4c.com 作者:ecshop专家
ecshop的mysql类很好使,提供的方法也很多,但是在开发过程中常用到一个autoExecute的方法,在这个方法里有一个bug,导至更新和添加数据时有时无法成功执行,主要原因是如果字段和和mysql关键字相同时mysql就会报错,原代码: function autoExecute($table, $field_values, $mode = 'INSERT', $where = '', $querymode = '') { $field_names = $this->getCol('DESC ' . $table); $sql = ''; if ($mode == 'INSERT') { $fields = $values = array(); foreach ($field_names AS $value) { if (array_key_exists($value, $field_values) == true) { $fields[] = '`'.$value.'`'; $values[] = "'" . $field_values[$value] . "'"; } } if (!empty($fields)) { $sql = 'INSERT INTO ' . $table . ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; } } else { $sets = array(); foreach ($field_names AS $value) { if (array_key_exists($value, $field_values) == true) { $sets[] = $value . " = '" . $field_values[$value] . "'"; } } if (!empty($sets)) { $sql = 'UPDATE ' . $table . ' SET ' . implode(', ', $sets) . ' WHERE ' . $where; } } if ($sql) { return $this->query($sql, $querymode); } else { return false; } } 修改后的代码: function autoExecute($table, $field_values, $mode = 'INSERT', $where = '', $querymode = '') { $field_names = $this->getCol('DESC ' . $table); $sql = ''; if ($mode == 'INSERT') { $fields = $values = array(); foreach ($field_names AS $value) { if (array_key_exists($value, $field_values) == true) { $fields[] = '`'.$value.'`'; $values[] = "'" . $field_values[$value] . "'"; } } if (!empty($fields)) { $sql = 'INSERT INTO ' . $table . ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; } } else { $sets = array(); foreach ($field_names AS $value) { if (array_key_exists($value, $field_values) == true) { $sets[] ='`'. $value . "` = '" . $field_values[$value] . "'"; } } if (!empty($sets)) { $sql = 'UPDATE ' . $table . ' SET ' . implode(', ', $sets) . ' WHERE ' . $where; } } if ($sql) { return $this->query($sql, $querymode); } else { return false; } } 主要把段名两边加了个'`'符号,运行起来更安全了 |
回答:
支持共享 |
有试到成功的吗? |
细节 决定成败!! 我也觉得ec很多时候 扩展性不是很好! |
它是开源的,可以加上很多补丁。 |
最近更新
常用插件
- ecshop二次商品订购人信息
ecshop二次商品订购人信息填写插件,有时候给朋友送花,或者是送礼品的...
- ecshop二次开发详细页面生
插件介绍: ECSHOP系统,在很多时候,很多商品没有人购买,不但购买的人...
- ecshop分类批量扩展插件
ecshop分类批量扩展插件,这个插件是ecshop插件里面比较核心的插件。我们...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
- ecshop2.7.1打印发货单插件
ecshop2.7.1打印发货单插件介绍:ecshop2.7.1和以前的ecshop版本不一样,ecs...
ecshop热门问答
ecshop热门资料
ecshopserial
ecshop五一
ecshop数据包
ecshop环境影响
zencart销售排行
ecshop速递
ecshop淘宝下载
ecshopEC二次开发
ecshopCEO
ecshop小小的
ecshop走秀网
ecshop里加
ecshopSpace
ecshop免费版
ecshopdigg顶一下
ecshop二级分类加图标
ecshop排序
ecshop url伪静态
安装两个ecshop系统
ecshop开发
ecshop264
ecshopUpFileBtn
ecshopdirect
ecshop最新推荐
zencart二次开发
分析zencart
ecshop葡萄酒商城
ecshop博客园
ecshopmemcche的使用
ecshop拍拍