0

新しい自動インクリメント ID を挿入する方法で説明されているように、自動インクリメント ID 列を持つテーブルに新しいレコードを挿入する場合、通常は ID フィールドに値 NULL を指定するか、INSERT クエリから省略するだけで十分です。

INSERT INTO  `database`.`table` (`id`, `user`, `result`) VALUES (NULL, 'Alice', 'green')");

また

INSERT INTO  `database`.`table` (`user`, `result`) VALUES ('Alice', 'green')");

私の質問は、準備されたステートメントを使用するときに同じことをどのように行うかです。NULL を使用して、次のことを試しました。

$stmt = $db->prepare("INSERT INTO `db` (id, name, password, text) VALUES (NULL, ?, ?, ?)");
$stmt->bind_param('sss', $name, $password, $text);
$stmt->execute();

ID フィールドを省略して、次のようにします。

$stmt = $db->prepare("INSERT INTO `test_db` (name, password, text) VALUES (?, ?, ?)");
$stmt->bind_param('sss', $name, $password, $text);
$stmt->execute();

これを実行すると、ブラウザーに何も挿入されず、エラー メッセージも表示されません。IDフィールド(stackoverflow.com/questions/12179770/…)に重複する値を挿入しようとしているからだと思いますが、これが準備されていないステートメントのデータ挿入方法と同等のように見えるのに、なぜそうすべきなのですか、そしてメッセージを出さない、わかりません。

どんなアイデアでも大歓迎です!

4

0 に答える 0