|
CI为何必须要在操作数据库的时候写这样的代码:
PHP复制代码 复制代码$data这个数组,如果我的后台我把表单的域的名称全部与数据库一一对应了,为何CI不能自动识别,还必须要"'title' => $this->input->post('title')," 这样一个个的逐个写出?这也太罗嗦了!!! 我输出 $this->input->post()的时候竟然是一片空白? 那位高手教教我。谢谢 | |
|
如果楼主用C++写过东西,就会发现,基于WEB层面的编程,其实已经简单多了。
另外,楼主提出的自动入库,键值对应,可能还需要等待。等待有一天,微软,或sun谁一统江湖,推出了一个全世界统一的编程标准,或者可以实现自动。 | |
|
1、前台的字段 也就是input的name最好不要和数据库的字段相同
2、不能直接使用$datas=$_POST; 先不说验证不验证的问题,在一个复杂的应用中,往往有很多hidden的name,他们并不需要入库,只是提供程序逻辑参考,这么写代码插入数据库就出错了。 3、其实你的想法是可以实现的,怎么实现呢?看如下: HTML复制代码 复制代码这里有一个新闻标题,新闻内容,是否广告三个字段,是否是广告是一个hidden值,通过页面载入或者其他js判断和改变。 你可以看到,你要入库的字段,有一个'db_'前缀,其他的字段没有这个前缀。 后台代码可以如下写: PHP复制代码 复制代码这样处理,$datas数组里面就有一个title 一个 body。 至于提交数据库前的验证,这里可以使用CI的验证类,具体怎么验证自己看验证类吧。 点评
不错!
发表于 2012年7月16日 20:16
评分 | |
|
楼上几位朋友都稍微注意一下,我想大家都是没有恶意的,就事论事就可以了。
另外,我觉得直接用 $_POST 入库,在一些不是很复杂的场合是很不错的,但是,这样会造成前端页面和数据库耦合性的增强,不利于解耦。在复杂应用的情况下会是个噩梦,呵呵。 | |
|
这个问题我把input扩展了一下,还是一样要指定接收哪个字段,只是POST可以传入数组,大家给点意见:
PHP复制代码 <?php if ( ! defined ('BASEPATH')) exit ('No direct script access allowed'); class MY_Input extends CI_Input { /** * Fetch items from the GET array * * @access public * @param mixed * @param bool * @return string */ function get($index = '', $xss_clean = FALSE) { if(is_array ($index)) { $rt = array (); foreach ($index as $key) $rt[$key] = $this->_fetch_from_array($_GET, $key, $xss_clean); return $rt; } else return $this->_fetch_from_array($_GET, $index, $xss_clean); } // -------------------------------------------------------------------- /** * Fetch items from the POST array * * @access public * @param mixed * @param bool * @return string */ function post($index = '', $xss_clean = FALSE) { if(is_array ($index)) { $rt = array (); foreach ($index as $key) $rt[$key] = $this->_fetch_from_array($_POST, $key, $xss_clean); return $rt; } else return $this->_fetch_from_array($_POST, $index, $xss_clean); } } 点评
收藏代码
发表于 2014年5月20日 11:11
评分 | |
|
CI全智能啦 那程序员 岂不是当傻子啦?
| |
|
$_POST直接入库?!写这类代码的人太不负责任,偷工减料
| |
|
本帖最后由 上善若水 于 2010年6月22日 06:42 编辑
把框架想得太神了吧..................... 比如插入订单的时候,创建时间,订单初始状态等等,都应该是必填字段 这些都应该是用php生成的吧,按你这个方法插入数据库怎么判断?你不会觉得应该CI也给你补上吧 如果要用隐藏字段来表示的话,会不会更啰嗦,或者sql 默认? | |
|
如果以上的代码能写成:$data = $this->input->post(); 这样就完美了,可是这样能行吗?
| |
|
$data =$_POST;
点评
同上
发表于 2012年12月14日 09:42
| |
|
这个东西,我觉得不能太简单了,直接把 $_POST 入库?我觉得这样编程不严谨,最起码要做一些字段限制,不能随随便便的就和数据库直接打交道。
虽然 ci 是会对 $_POST 做过滤的(如果打开了全局 xss 过滤的话) | |