我试图在“places”列的特定行(ID)中更新MySQL数据库字段(将值减1),只要该字段中的数字大于0.
(参见下面的示例声明)
UPDATE table SET places = places - 1 WHERE id = $id AND places > 0
除了将字段的值更改为零之外,下面的语句失败了。 如果有人可以帮助解决语法错误,我将不胜感激。
if($id){
global $modx;
$table = "`database_name`.`table_name`";
$update_seats = "`places` - 1";
$result = $modx->db->update( '`places` = "' . $update_seats . '"', $table, '`id` = "' . $id . '" AND `places` > 0' );
return $result; // Returns 'true' on success, 'false' on failure.
}
答案 0 :(得分:1)
您在双引号中附加了新的字段值
$result = $modx->db->update( '`places` = "' . $update_seats . '"', $table, '`id` = "' . $id . '" AND `places` > 0' );
在MySQL查询中被评估为字符串的内容。删除双引号
'`places` = "' . $update_seats . '"'
所以它看起来像这个
$result = $modx->db->update( '`places` = ' . $update_seats, $table, '`id` = "' . $id . '" AND `places` > 0' );
答案 1 :(得分:0)
查询看起来不错,如果您需要将1
的最小值设置为places
,则应该相应地更改查询:
UPDATE table SET places = places - 1 WHERE id = $id AND places > 1