gpt4 book ai didi

php - 如何在参数化的 PHP PDO 插入中指定 'default'?

转载 作者:可可西里 更新时间:2023-11-01 06:49:54 26 4
gpt4 key购买 nike

我现在想出了一个解决方法,但我很好奇以供将来引用...

如果 mysql 表列定义为 NOT NULL 但具有默认值,如果在插入语句中未指定列名,或者如果您将关键字 DEFAULT 指定为值,则将插入该默认值。如果您专门将 NULL 用作 NOT NULL 列的值,即使该列具有默认值,它也会尝试插入 NULL 并引发错误。

但是有什么方法可以将 DEFAULT 关键字指定为参数化 INSERT 语句中的值吗?我不想只是从插入语句中省略该列,因为我想对多个数据集使用相同的语句,其中一些实际上有该列的数据。

最佳答案

如果您想要一个将 NULL 视为列的默认值的 INSERT 语句,这里有一个解决方案:

我创建了一个表:

CREATE TABLE `foo` (
`x` INT DEFAULT '768'
)

然后我用 PDO 测试了几个准备语句 INSERT:

$stmt = $pdo->prepare("INSERT INTO foo (x) VALUES (COALESCE(?, DEFAULT(x)))");

$stmt->execute( [ 42 ] ); // inserts a real value

$stmt->execute( [ NULL ] ); // inserts the column's default value

我确认了测试:

mysql> select * from foo;
+------+
| x |
+------+
| 42 |
| 768 |
+------+

使用 PHP 5.5.12 和 MySQL 5.6.17 进行测试。

关于php - 如何在参数化的 PHP PDO 插入中指定 'default'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23876622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com