アップデート:
回答はすでに与えられているので、CodeIgniter 3.1.11 の新規インストールでテストを行います。
そして、id、name、email の 3 つの列を持つ新しいデータベースとテーブルを作成します。
次に、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']);
最初のコードまたは 2 番目のコードを使用した結果は同じです。
name = 'hikki bocchi' および email = '' (空白) でデータベースに挿入されたデータ。
これは CodeIgniter のバグですか? それとも、これは私だけに起こりますか?
年:
まず、CodeIgniter と Database は初めてなので、わかりやすい回答を得たいと思います。CodeIgniter と MySQL を使用し、Adminer を使用してデータベースを設定します。
id、name、email、password、role_id、is_active、date_created、date_modified の 8 つの列を作成しました。
そして、codeigniter を使用して 1 つの列 (名前) のみを挿入しようとしましたが、エラーは表示されません。
$this->db->insert('users', ['name' => 'Hikki Bocchi']);
私の論理では、列 id、date_created、date_modified の値は自動的に作成されますが、列名、メール、パスワード、role_id、is_active は作成されません。
しかし、なぜデータは 1 つの列だけで挿入できるのでしょうか? これは間違いではないでしょうか。名前の値が挿入され、他の列の値は空白または 0 です。
私の質問は、なぜこれが起こるのでしょうか? そして、それはエラーを表示できませんか?