ThinkPHP中的数据创建Create方法是一个非常有用的功能,它自动根据表单数据创建数据对象(在表字段很多的情况下尤其明显)
但有时候该方法可能并未按照你期望的来工作,比如方法不工作而且还没有提示错误信息
这个时候你就要好好仔细检查下你的代码了,因为很有可能你写的代码不规范或是其他原因
以下是我因为自己的粗心而出现的问题:Create方法失效而没有提示错误信息
 /**
* 编辑数据
* @Author HTL
* @Email huangyuan413026@163.com
* @DateTime 2015-10-30T17:00:29+0800
*/
function edit_post(){
if(IS_POST){ print_r($this->org_model);
if ($this->org_model->create()) {
//code
echo $this->org_model->_sql();//最后一条执行的Sql die ("create");
} else {
echo $this->org_model->_sql();//最后一条执行的Sql
die($this->org_model->getError());
}
}
}
 
浏览器发出的POST请求数据
 
edit_post打印的信息

  1. Think\Model Object
  2. (
  3. ***
  4. ***
  5. )
  6. SHOW COLUMNS FROM `table1`
好像上面的都没有什么问题,最主要的是得到了数据库信息(在Mysql里可以正常执行)但就是if(create()){}里的代码没有执行
说明create方法并未按照预期执行,该问题我找了半个小时在网络上也看了别人的一些经历都没有解决
 
然后我就看了下数据库表结构,我似乎明白了什么于是我把表字段的全部更改成小写然后再执行就解决了
 
问题原因:Html元素的值跟数据库存在大小写差异
 
参考网络上的经验总结下以下规则可解决以上问题:
  1. HTML中的元素是否指定了name属性且name的值跟数据库中的值完全一致(区分大小写)
  2. 确认HTML表单中的数据正确发送了出去
  3. Model 命名是否错误能否找到对应的表(能否打印了Model对象)
  4. Model类及其成员方法是否是私用或受保护
  5. Model的getError()方法是否有错误
  6. 方法能否接收到POST的值,POST接收到的值跟请求的值是否一致(注意大小写)
  7. 确认遵守了ThinkPHP的开发规范
如果以上还没有解决你的问题,那要考虑下你的人品了
 
参考:

解决ThinkPHP的Create方法失效而没有提示错误信息的问题的更多相关文章

  1. ThinkPHP中create()方法自动验证表单信息

    自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证. 原理: create()方法收集表单($_POST)信息并返回,同时触发表单自动验证 ...

  2. ThinkPHP的create方法的一系列操作

    1.数据操作状态 create方法的第二个参数可以指定数据的操作状态,默认是自动判断的(写入[Model:MODEL_INSERT或者1].更新[Model:MODEL_UPDATE或者2].也可以自 ...

  3. 关于ThinkPHP控制器的方法失效的问题

    今天发现控制器的方法失效了,用了排除法,找了长时间的原因,都没有找出来,后来干脆把home模块中的控制器和视图文件都复制到bbs模块下,竟然也不行. 这说明了控制器和视图没有问题,一定是模块的配置有问 ...

  4. 使用jQuery异步传递Model到控制器方法,并异步返回错误信息

    需要通过jquery传递到控制器方法的Model为: public class Person { public string Name { get; set; } public int Age { g ...

  5. struts2 中的 addActionError 、addFieldError、addActionMessage方法的区别添加错误信息

    转自:https://www.cnblogs.com/wangyp/archive/2011/07/13/2104828.html 一.addActionError("错误内容") ...

  6. MySQL ERROR 1005: Can't create table (errno: 150)的错误解决办法

    在mysql 中建立引用约束的时候会出现MySQL ERROR 1005: Can't create table (errno: 150)的错误信息结果是不能建立 引用约束. 出现问题的大致情况 1. ...

  7. 【MySQL】ERROR 1005: Can't create table (errno: 150)的错误解决办法

    在mysql 中建立引用约束的时候会出现MySQL ERROR 1005: Can't create table (errno: 150)的错误信息结果是不能建立 引用约束. 出现问题的大致情况 1. ...

  8. ThinkPHP第八天(U函数放置在外部JS不会被解析,错误界面定制,错误信息变量)

    1.JS外部文件中U函数不会被解析,内部JS代码可以被解析. 2.halt. _404可以定制错误模板,在配置文件中配置 TMPL_EXCEPTION_FILE =>'./Public/Tpl/ ...

  9. IE8下String的Trim()方法失效的解决方法

    String的Trim()方法失效,在ie8下是有这样的情况的,解决方法也很简单使用$.trim(str)即可,需要的朋友可以了解下 用jquery的trim()方法,$.trim(str)就可以了.

随机推荐

  1. firedac连接WINDOWS的ORACLE

    firedac连接WINDOWS的ORACLE 首先安装OCI FOR WINDOWS.OCI分WIN32和WIN64,且OCI的版本要和ORACLE的版本相一致才行. FIREDAC指定OCI驱动程 ...

  2. Android 和 iOS 应用程序开发对比 [持续更新]

    1.Android 用字典模式统一管理应用程序中UI上用到的所有字符串. 比如文本框的默认文本.按钮的名字等等.表现形式:XML文件 Android中 "@string/text_filed ...

  3. hibernate 注解 联合主键映射

    联合主键用Hibernate注解映射方式主要有三种: 第一.将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将 该类注解 ...

  4. 【python】python读取文件报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 2: illegal multibyte sequence

    python读取文件报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 2: illegal multibyte ...

  5. CURLcode的定义

    经常性遇到libcurl的问题,而且都特别奇怪,记录一下CURLcode的定义: http://curl.haxx.se/libcurl/c/libcurl-errors.html   #includ ...

  6. TextView 中文文档

    属性名称 描述 android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/all) ...

  7. protobuf 嵌套示例

    1.嵌套 Message message Person { required string name = 1; required int32 id = 2;        // Unique ID n ...

  8. 整合 Ext JS 和第三方类库

    介绍 ExtJS提供了许多高度可定制化内置组件.如果它不在框架(framework)里面,你可以很容易的扩展这些类,或者浏览Sencha市场(Sencha Market) 寻找你可能需要的任何东西.那 ...

  9. 在此处打开OpenPowershellHere右键 在此处打开命令窗口右键

    windows 10  右键添加在本文件夹打开cmd  或prowershell 在此处打开OpenPowershellHere右键 Windows Registry Editor Version 5 ...

  10. RSA加密解密及RSA签名和验证及证书

    RSA加密解密及RSA签名和验证及证书 公钥是给别人的 发送密文使用公钥加密 验证签名使用公钥验证 私钥是自己保留的 接受密文使用私钥解密 发送签名使用私钥签名 上述过程逆转是不行的,比如使用私钥加密 ...