Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅当列字段为空时更新(PostgreSQL)_Php_Database_Postgresql - Fatal编程技术网

Php 仅当列字段为空时更新(PostgreSQL)

Php 仅当列字段为空时更新(PostgreSQL),php,database,postgresql,Php,Database,Postgresql,我正在使用PostgreSQL和PHP进行一个项目 $email=filter\u vartrim$\u POST[email],filter\u SANITIZE\u email; $result=pg_查询$dbconn,更新target.table 设置已激活=真,已激活\u时间戳=现在 激活的位置为空 和email='$email'; 如果$结果{ 回音已激活或电子邮件无效!; 出口 }否则{ 回声更新!; } 我有target.table,其中包含可以通过表单输入电子邮件地址来激活其帐

我正在使用PostgreSQL和PHP进行一个项目

$email=filter\u vartrim$\u POST[email],filter\u SANITIZE\u email; $result=pg_查询$dbconn,更新target.table 设置已激活=真,已激活\u时间戳=现在 激活的位置为空 和email='$email'; 如果$结果{ 回音已激活或电子邮件无效!; 出口 }否则{ 回声更新!; } 我有target.table,其中包含可以通过表单输入电子邮件地址来激活其帐户的用户

在该表中,具有电子邮件地址唯一标识符的每个用户都有两个与他相关联的字段:activated和activated_timestamp

上述代码起作用,仅当用户以前未被激活时才更新表


但$result仍然返回true。因此,在提交表单时,页面回显更新!而不是已经激活…我不明白为什么。

这是因为函数返回一个表示查询结果的资源。它仅在发生错误时返回FALSE

尝试改用if pg_impacted_rows$result==0

根据pg_,只有在出现错误时,查询才会返回FALSE,否则将返回资源,转换为布尔值的资源始终为TRUE。您应该使用pg_impacted_rows$result来确定是否有任何记录因为您的查询而被更改