php-Postgresql:使用准备好的语句插入和更新行时使用“ NULL”值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-Postgresql:使用准备好的语句插入和更新行时使用“ NULL”值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1330字,纯文字阅读大概需要2分钟。
内容图文
有时我需要在表中插入一些空值,或更新它们以将值设置为NULL.
我已经阅读了Postgresql文档中的某处,该操作无法完成,但是可以使用默认值来欺骗:
pg_query("INSERT INTO my_table (col_a, col_b) VALUES ('whatever', default)
ps:我知道在这个例子中,我将得到相同的结果
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可以做到(或者看起来可以),并且是用PHP编写的(我不认为它无论如何都不会使用准备好的语句)
如果您想知道为什么我需要在表中使用空值,请举个例子(也许有比空值更好的方法):假??设我有用户表,而电子邮件栏:此表可以为空,但是是唯一索引..2个空电子邮件相等并且违反了唯一约束,而2个NULL值不相等并且可以共存.
解决方法:
使用php的文字NULL作为参数:
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));
内容总结
以上是互联网集市为您收集整理的php-Postgresql:使用准备好的语句插入和更新行时使用“ NULL”值全部内容,希望文章能够帮你解决php-Postgresql:使用准备好的语句插入和更新行时使用“ NULL”值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。