0

我正在尝试使用 php 更新 mySQL 表。基本上,我传递了一个 ordernumber (int) 并使用它来查找 isbn 和 quantityordered,然后我用它们来更新另一个表。

$orderID=$_POST["order_ent_number"];

$query="select ISBN from Orders where orderNumber='$orderID'";

$isbn = mysql_query($query) or die(mysql_error());


$query="select quantityOrdered from Orders where orderNumber='$orderID'";

$quantityordered = mysql_query($query) or die(mysql_error());



$query="UPDATE Books SET inStock='$quantityordered' WHERE inStock='0' AND isbn='$isbn'";

        $result = mysql_query($query) or die(mysql_error());

所以使用 MySQL bench,查询工作(如果我用数字替换所有变量)并更改它。问题是当我在 PHP 中使用变量时,代码不起作用。我尝试了 mysql_escape_string 但也没有用。我检查了两个变量 $isbn 和 $quantityordered 的结果,它们是正确的。在服务器上运行它时我没有收到任何错误,但数据库中的 inStock 没有任何变化。搜了一圈,有人说我的变量需要转成整数?不确定这是否正确,但这就是我想出的全部。有什么建议么?

4

2 回答 2

1

UPDATE实际上,您可以通过加入表格在单个语句中完成此操作,

UPDATE  Books a
        INNER JOIN Orders b
            ON a.ISBN = b.ISBN
SET     a.instock = a.quantityOrdered
WHERE   a.instock = 0 AND
        b.OrderNUmber = '$orderID' AND
        a.ISBN = '$isbn' 

作为旁注,SQL Injection如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-04-08T06:12:07.327 回答
-1

也许你可以试试

$query="select ISBN from Orders where orderNumber='".$orderID."'";
$query="select quantityOrdered from Orders where orderNumber='".$orderID."'";
$query="UPDATE Books SET inStock='".$quantityordered."' WHERE inStock='0' AND isbn='".$isbn."'";
于 2013-04-08T06:13:22.757 回答