使用php更新mysql表没有任何变化

时间:2013-04-08 06:08:23

标签: mysql sql join sql-update

我正在尝试使用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工作台,查询工作(如果我用数字替换所有变量)并更改它。问题是当我在PHP中使用变量时,代码不起作用。我尝试了mysql_escape_string,但也没有用。我检查了两个变量$ isbn和$ quantityordered的结果,他们是对的。当我在服务器上运行它时没有错误,但数据库中的inStock没有变化。搜索后,有人说我的变量需要变成整数?不确定这是否正确,但这就是我想出来的。有什么建议?

2 个答案:

答案 0 :(得分: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' 

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

答案 1 :(得分:-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."'";