php - 为什么只向 mysql 数据库插入一列不会在 codeigniter 中显示错误?

标签 php mysql codeigniter adminer

更新:

因为已经给出了答案,所以我使用全新安装的 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']);

使用第一个代码和第二个代码的结果是一样的:

the data inserted to the database with name = 'hikki bocchi' and email = '' (blank).

这是 CodeIgniter 上的错误吗?或者这只发生在我身上?

旧:

首先,我是 CodeIgniter 和数据库的新手,所以我想获得易于理解的答案。 我使用 CodeIgniter 和 MySQL,并使用 Adminer 设置数据库。

我创建了 8 列:id、name、email、password、role_id、is_active、date_created 和 date_modified。

database columns

然后我尝试使用 codeigniter 仅插入 1 列(名称),它没有显示任何错误。

$this->db->insert('users', ['name' => 'Hikki Bocchi']);

我的逻辑是,列 id、date_created、date_modified 的值会自动创建,但列名、电子邮件、密码、role_id、is_active 不会。

但是为什么数据只能插入一列呢?这一定是个错误吗? name值已插入,其他列值为空或0。

blank value

我的问题是为什么会发生这种情况?它不能显示错误吗?

最佳答案

MySQL 有默认值。当您使用 codeignier 时,它会将插入语句重写为类似于以下内容的内容:

INSERT INTO `users` (name) VALUES ('Hikki Bocchi');

从那时起,完全取决于您的数据库来确定默认值是什么。使用:

SHOW CREATE TABLE `users`;

查看您当前的默认值是什么。您可以编辑架构,并更改默认值。

关于php - 为什么只向 mysql 数据库插入一列不会在 codeigniter 中显示错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58868419/

相关文章:

mysql - 获取每组最高/最小<whatever>的记录

PHP PDO mySQL 查询 - 最高效的方法

php - 如何制作php表达式并从数据库执行?

php - Android App 与 PHP 服务器之间的服务器客户端通信

PHP:使用 mysql_fetch_array 更快地填充数组

php - Codeigniter - 在 HTML 表中显示来自三个表的数据作为数组对象

php - 代码点火器 SQL 注入(inject)

codeigniter - 如何在非 ASCII 字符中命名 Codeigniter Controller 以获得 SEO 友好的 URL?

php - 如何将 PHPExcel 生成的文件从 PHP 页面传递到另一个 PHP 页面?

php - 在 Windows 上使用 PHP 时,(1) SQL Server 的 native 驱动程序或 (2) PDO 驱动程序哪个更好?