0

したがって、Invoice と Order_Table の 2 つのテーブルを更新しようとしています。各テーブルの新しい数量と新しい価格を更新したいのですが、特定の OrderID に対してのみです。私はこれを思いつきました:

$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'

4

1 に答える 1

0

実行する直前に SQL をエコーアウトします。おそらく、期待どおりに変数に何かが含まれていない可能性があります。それ以外の場合は、更新された各レコードが同じ orderID を持っている必要があります。

また、コメントで指摘されているように、文字列のみを引用符で囲む必要があり、数値型にはそれらを含めないでください。

次のように、実行するクエリを 1 つのクエリに結合することもできます。

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

これにより、上位 2 つのクエリが結合されました。下位 2 つのクエリについても同様に行うことができます。

于 2013-11-07T01:00:26.997 に答える