1

アップデート:

回答はすでに与えられているので、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 です。

空白値

私の質問は、なぜこれが起こるのでしょうか? そして、それはエラーを表示できませんか?

4

1 に答える 1

0

MySQL にはデフォルト値があります。codeignier を使用すると、その挿入ステートメントを次のようなものに書き換えます。

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

その時点から、デフォルト値が何であるかを決定するのは完全にデータベース次第です。使用する:

SHOW CREATE TABLE `users`;

現在のデフォルト値を表示します。スキーマを編集して、デフォルト値を変更できます。

于 2019-11-15T00:10:07.747 に答える