gpt4 book ai didi

php - 在带有准备好的语句的 INSERT 或 UPDATE 中使用 NULL 值

转载 作者:可可西里 更新时间:2023-11-01 00:53:55 25 4
gpt4 key购买 nike

有时我需要在表中插入一些空值,或更新它们并将值设置为 NULL。

我在 Postgres 文档的某处读到这无法完成,但可以使用默认值欺骗:

pg_query("INSERT INTO my_table (col_a, col_b) VALUES ('whatever', default)

我知道在这个例子中我会得到相同的结果:

pg_query("INSERT INTO my_table (col_a) VALUES ('whatever')

但是问题来自准备好的语句:

pg_prepare($pgconn, 'insert_null_val', "INSERT INTO my_table (col_a, col_b) VALUES ($1, default)");
pg_exec($pgconn, 'insert_null_val', array('whatever'));
//this works, but
pg_prepare($pgconn, 'insert_null_val', "INSERT INTO my_table (col_a, col_b) VALUES ($1, $2)");
pg_exec($pgconn, 'insert_null_val', array('whatever', 'NULL'));
//insert into the table the string 'NULL'.
//instead using array('whatever', '') it assume the col_b as empty value, not NULL.

同样的问题也适用于更新语句。

我认为有一个解决方案,因为 pgmyadmin 可以做到(或者看起来可以)。

如果您想知道为什么我需要在我的表中使用空值,让我举一个例子(也许有比空值更好的方法?):

假设我有一个包含 email 列的 users 表,该列可以为空,但有一个唯一索引。 2 个空电子邮件相等 并且违反唯一约束,而 2 个NULL 值不相等并且可以共存。

最佳答案

使用 php 的文字 NULL 作为参数:

pg_prepare($pgconn, 'insert_null_val', "INSERT INTO my_table (col_a, col_b) VALUES ($1, $2)");
pg_query($pgconn, 'insert_null_val', array('whatever', NULL));

关于php - 在带有准备好的语句的 INSERT 或 UPDATE 中使用 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1027499/

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