更新字段MySQL语句中的错误

时间:2014-02-07 23:29:24

标签: php mysql modx

我试图在“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.
    }

2 个答案:

答案 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