2014-03-02 1 views
0

Я пытаюсь обновить значение в базе данных MySQL с помощью следующей функции, которая создает оператор обновления, который вычитает значение $ мест переменные в от существующего значения в местах поля в базе данных. Код ниже возвращает 0 вместо уменьшения значения мест по значению переменной $ seat.Обновления база данных MySQL с помощью PHP заявления

$update_seats = update_places($id); 

    function update_places($id) { 
     global $modx; 
     $table = "`database_name`.`table_name`"; 
     $update_seats = '`places`' - $seats; 
     $result = $modx->db->update('`places` = ' . $update_seats, $table, '`id` = "' . $id . '" AND `places` > 0'); 
     return $result;   // Returns 'true' on success, 'false' on failure. 

}

Любая помощь с корректировкой мой синтаксис очень ценится.

+0

Я думаю, вам нужно изменить '$ update_seats = '\' places \ '' - $ seat;' by: '$ update_seats = '\' places \ '-'. $ seat; ' – Seb33300

+0

Какова ваша переменная $ modx? Похоже, вы не определили $ seat. –

+0

Hi Seb33300 - спасибо вам за помощь. Я пробовал ваше предложение со следующим сообщением об ошибке: 'SQL> UPDATE' имя_базы_'''_ имя_ '' '' '' '' '' '' (значение $ seat должно быть здесь) WHERE 'id' =" 1104 " AND 'places'> 0' Значение переменной $ seat не отправляется. Он объявляется далее на странице вне funtion. – Twobears

ответ

0

$seats переменная не определена внутри функции, вы должны использовать:

function update_places($id, $seats)

, а затем вызвать его $update_seats = update_places($id, 123);

также изменить запрос, чтобы быть более правильным:

$result = $modx->db->update('`places` = ' . $update_seats, $table, '`id` = ' . intval($id, 10) . ' AND `places` >= ' . $seats); 
+0

Hi Lashane - отлично работал, большое спасибо за вашу помощь – Twobears