php - 仅当字段为空时更新

标签 php mysql database joomla

我试图根据第一个表的更新来阻止 2 个表的更新。

这是我必须检查第一个表的内容。

//add user to pif_table//
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query="UPDATE `pif_table` SET $g = '$uname', @success = 1 WHERE $g IS NULL OR $g = '' AND id = '$id' ";
$db->setQuery($query);
$result = $db->execute();

因此,仅当 $g 列为空时才会更新上面的第一个表。

我只希望更新接下来的 2 个表格,如果 $g 列为空并在上面进行了更新。

我从命令的 @success = 1 部分收到语法错误。

if ($success == 1){
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query="UPDATE `jospk_users` SET tables = tables +1, payments = payments +1, tbl".$pifbase."= tbl".$pifbase." +1 WHERE id = '$uid'";
$db->setQuery($query);
$result = $db->execute();

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query = "INSERT INTO `pif_payments` (`table_num`, `r_1`, `r_2`, `r_3`, `r_4`, $g, `amount`) VALUES ('$id', '$r1', '$r2', '$r3', '$r4', '$uname', '$pifbase') ON DUPLICATE KEY UPDATE $g = '$uname'";
$db->setQuery($query);
$result = $db->execute();
}

最佳答案

据我了解,如果记录未更新,Jommla 的 JFactory 的 execute 方法不会返回 false,并且只有在查询数据库时才能检查这一点。

因此,在尝试运行第一个 UPDATE 查询之前,请使用新值创建一个变量或数组,一旦完成,请检查记录并查看它是否与新值匹配(如果匹配)继续运行剩余的查询。

关于php - 仅当字段为空时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51567781/

相关文章:

GoDaddy Linux Shared 上的 PHP 尝试通过 GMAIL SMTP 发送

javascript - 如何使用 php 或 javascript 将所有换行符和制表符替换为其各自的\x 代码?

python - Django 说该表不存在

database - 在Web View 中获取值的速度不够快

php - 使用 Orchestra Testbench 测试独立 Laravel 包时出现错误 : Class 'Route' not found in routes. php

PHP ImagePNG 仅创建一个 33 字节文件

mysql - 在 Joomla 3.x 中选择所有行不起作用

mysql - 我如何在 mySQL 表中只显示日期而不显示时间?

database - 我真的需要散列密码吗?

iphone - 在 iPhone 上刷新数据库