php - 为什么只向 mysql 数据库插入一列不会在 codeigniter 中显示错误?
问题描述
更新:
因为已经给出了答案,所以我使用全新安装的 CodeIgniter 3.1.11 进行了测试。
并创建一个新的数据库和表,包含 3 列:id、name、email。
然后,我尝试使用 mysql cli 插入数据:
INSERT INTO users (name) VALUES ('hikki bocchi')
--- result ---
ERROR 1364 (HY000): Field 'email' doesn't have a default value
然后,我尝试使用 CodeIgniter:
--- first code ---
$query = "INSERT INTO users (name) VALUES ('hikki bocchi')";
$this->db->query($query);
--- second code ---
$this->db->insert('users', ['name' => 'hikki bocchi']);
使用第一个代码或第二个代码的结果是相同的:
插入数据库的数据名称 = 'hikki bocchi' 和电子邮件 = ''(空白)。
这是 CodeIgniter 上的错误吗?还是这只发生在我身上?
老的:
首先,我是 CodeIgniter 和数据库的新手,所以我想得到易于理解的答案。我使用 CodeIgniter 和 MySQL,并使用 Adminer 设置数据库。
我创建了 8 列:id、name、email、password、role_id、is_active、date_created 和 date_modified。
然后我尝试使用 codeigniter 仅插入 1 列(名称),它没有显示错误。
$this->db->insert('users', ['name' => 'Hikki Bocchi']);
我的逻辑是,列 id、date_created、date_modified 的值会自动创建,但列名、email、password、role_id、is_active 不会。
但是为什么数据只能插入一列呢?这不应该是一个错误吗?名称值已插入,其他列值为空白或 0。
我的问题是为什么会发生这种情况?它不能显示错误吗?
解决方案
MySQL 有默认值。当您使用 codeignier 时,它会将该插入语句重写为类似于:
INSERT INTO `users` (name) VALUES ('Hikki Bocchi');
从那时起,完全取决于您的数据库来确定默认值是什么。利用:
SHOW CREATE TABLE `users`;
查看您当前的默认值是什么。您可以编辑架构,并更改默认值。
推荐阅读
- c - windows IDE和gcc之间源代码的兼容性?
- vue.js - 无法测试 Vue 组件,因为未定义 Vue 实例
- angularjs - 如何使用angular js保存html表格的多行数据
- spring - IllegalStateException:使用 Kotlin 业务逻辑的 Spock 单元测试不能为空
- travis-ci - 未在 Travis CI 上使用 Matrix 时“未设置环境变量”
- javascript - JavaScript/ES6 属性在构造函数中设置值时不使用 setter
- javascript - 如何在javascript中将选定的表行值发送到另一个页面
- ios - Xcode 11.1 卡在归档上
- javascript - 如何在应用程序处于后台模式时运行 ajax?
- reactjs - 运行 webpack 后让 React 出现