仅当字段为空时更新

时间:2018-07-28 03:31:18

标签: 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();
}

1 个答案:

答案 0 :(得分:0)

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

因此,在尝试运行第一个UPDATE查询之前,请先创建一个具有新值的变量或数组,一旦找到,请检查记录并查看其是否与新值匹配(如果这样),请继续运行剩余的查询。

相关问题