2013-11-07 7 views
0

Итак, я пытаюсь обновить обновление моих 2 таблиц: счет-фактура и заказ_Таблица. Я хочу, чтобы он обновлял новое количество и новую цену в каждой таблице, но только для определенного OrderID. Я пришел к следующему:PHP: MySQL: обновление обновляет более одной строки

$UpdateQuant = "UPDATE Order_Table SET Quantity = '$NewQuant' WHERE OrderID = '$OrderID' "; 
$UpdateQuant = mysql_query($UpdateQuant); 

$UpdatePrice = "UPDATE Order_Table SET TotalCost = '$NewPrice' WHERE OrderID = '$OrderID' "; 
$UpdatePrice = mysql_query($UpdatePrice); 


//Update Invoice Table 
$UpdateQuant = "UPDATE Invoice SET Quantity = '$NewQuant' WHERE OrderID = '$OrderID' "; 
$UpdateQuant = mysql_query($UpdateQuant);     

$UpdatePrice = "UPDATE Invoice SET TotalCost = '$NewPrice' WHERE OrderID = '$OrderID' "; 
$UpdatePrice = mysql_query($UpdatePrice); 

Однако, когда я выполняю это, он обновляет каждую строку. Я не понимаю, почему это произойдет даже с тех пор, как я использую WHERE OrderID = '$OrderID'

+0

Выбросьте SQL перед тем, как выполнить его, возможно, что-то не в переменных, как вы ожидаете. В противном случае, должно быть, каждая обновленная запись имеет тот же самый идентификатор orderID. – Fluffeh

+1

Guessing OrderID - целое число в вашей базе данных, вы должны оставить одинарные кавычки вокруг '$ OrderID'. Как также объяснено на: http://stackoverflow.com/questions/10983499/mysql-automaticaly-cast-strings-to-integer Просьба также сообщить, что это искренний риск использовать функции mysql_ *, и все расскажут вам либо использовать функции mysqli_ * или pdo! Не только из-за проблем с безопасностью, но и из-за передовой совместимости. – Luceos

+0

Можете ли вы запустить следующий запрос и опубликовать вывод? 'SELECT * FROM Invoice WHERE OrderID = '$ OrderID''? – Machavity

ответ

0

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

Кроме того, как указал Int он комментирует, только строки должны быть заключены в кавычки, числовые типы не должны иметь их:

Вы также можете комбинировать запросы, которые выполняются в один, как это:

$UpdateQuant = "UPDATE Order_Table SET Quantity = $NewQuant, TotalCost = $NewPrice WHERE OrderID = $OrderID "; 
$UpdateQuant = mysql_query($UpdateQuant); 

Сочетание двух верхних запросов вместе, и вы можете сделать то же самое для нижних двух.

+0

Я предлагаю не использовать тот же самый небезопасный устаревший код. Пока ваш код работает, он все еще оставляет OP открытым для инъекций. – Snowburnt

Смежные вопросы