我正在尝试更新"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.
}
您已将字段的新值括在双引号中
$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
设置为 places
,您只需相应地更改查询:
UPDATE table SET places = places - 1 WHERE id = $id AND places > 1