我做这是为了增加存储在我的网站的管理部分。我遇到了一个很奇怪的问题。$voorraad总是等于7,不管我选择了什么产品(id更改),它总是以7的形式出现。
我是通过创建一个会话并将其回显到另一个页面来回显$voorraad。表名和列是正确的。有人能解释为什么$voorraad总是等于7吗?如果你需要更多的代码,我会提供它。
$cartItems = $cart->contents();
foreach($cartItems as $item){
$sql = ("SELECT voorraad FROM Producten WHERE id =".$item['id']);
$voorraad = (float)mysql_query($sql);
$itm = (float)$item['qty'];
$_SESSION['voorraad'] = $voorraad;
$_SESSION['itm'] = $itm;
$up = $itm + $voorraad;
$sql1 = "UPDATE Producten SET voorraad = $up WHERE id =".$item['id'];
$res = mysql_query($sql1);
}发布于 2017-05-11 08:07:10
因为要将mysql响应对象转换为浮点数,所以实际上没有得到结果。
$voorraad = mysql_query($sql);
$voorraad = mysql_fetch_assoc($voorraad)['voorraad']; // get the row, and the cell from the row$voorraad现在应该包含实际的响应。
发布于 2017-05-11 08:07:55
首先:您对SQL注入非常开放。在将用户输入传递给查询之前,对其进行筛选和验证。
第二件事:不要使用mysql_*,它已经过时,被认为不再安全了。使用mysqli_*或PDO代替。
mysql_query()返回一个resource,您尝试将其转换为float。要访问必须使用的值,请使用
$result = mysql_query(....);
$row = mysql_fetch_array($result);
$voorraad = $row['voorraad'];发布于 2017-05-11 08:10:59
首先,不推荐使用mysql_*-functions,如果您更新了php版本,就不能再使用它们了。第二,您应该使用准备好的语句,以防止sql注入。
回到您的主要问题:执行查询,但永远不会获取结果,因此您只需将resource返回类型转换为浮点数,这将为您提供意外的结果。在您的例子中,您可以使用mysql_fetch_assoc获取行,您希望
因为要将mysql响应对象转换为浮点数,所以实际上没有得到结果。
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$column = $row['column_name'];https://stackoverflow.com/questions/43909662
复制相似问题