我正在尝试使用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没有变化。搜索后,有人说我的变量需要变成整数?不确定这是否正确,但这就是我想出来的。有什么建议?
答案 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."'";