Несколько mysql_query не работают

#php #mysql

#php #mysql

Вопрос:

У меня есть работающий mysql_query:

 mysql_query("update products set buyers = buyers $qtd where id=$pid")  or die (pgs_log("erro linha 70 >".mysql_error()));   
  

Но затем я вставляю следующий запрос сразу после него, и он выполняет только первый:

 mysql_query("update products set pending = pending-$qtd where id=$pid")  or die (pgs_log("erro linha 70 >".mysql_error())); 
  

Итак, я что-то упускаю?

Комментарии:

1. попробуйте echo вывести sql-запросы на экран и посмотреть, работает ли по-прежнему $qtd and $pid , если это не так, проверьте свой pgs_log (не уверен, что он делает). Запрос выдает ошибку или страница просто загружает базу данных, но без изменений?

2. в вашем коде есть дыра для SQL-инъекций, измените where id=$pid") на where id='$id'") . т. е. заключите все это $vars в одинарные кавычки, иначе ваши mysql_real_escape_string будут напрасны.

Ответ №1:

Пара вещей. Во-первых, для этого вам не нужны два отдельных запроса. MySQL может быть сбит с толку, думая, что ваше значение является именем столбца из-за тире:

 mysql_query("
UPDATE `products` 
SET `buyers` = `buyers`   $qtd, 
`pending` = `pending` - $qtd 
WHERE `id` = $pid")  or die (pgs_log("erro linha 70 >".mysql_error()));
  

Ответ №2:

если вы хотите дважды проверить, что ваше обновление действительно обновило данные, тогда вам следует исследовать mysql_affected_rows. Вам нужно будет проверить, что ваше старое значение отличалось от вашего нового значения, в противном случае у вас будет ноль затронутых строк, что сделает эту проверку бесполезной.

Вы не используете правильные кавычки вокруг ссылок на таблицы и столбцы. Они должны быть окружены обратными галочками и могут быть объединены следующим образом:

 UPDATE
    `products` 
SET
    `pending` = `pending` - $qtd,
    `buyers` = `buyers`   $qtd
WHERE
    `id` = $pid;
  

Ответ №3:

 mysql_query("update `products` 
             set `pending` = `pending` - $qtd, 
                 `buyers` = `buyers`   $qtd 
             where `id` = $pid")  
             or die (pgs_log("erro linha 70 >".mysql_error()));