首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在foreach循环中从数据库中选择数据总是7。

问在foreach循环中从数据库中选择数据总是7。
EN

Stack Overflow用户
提问于 2017-05-11 07:59:27
回答 3查看 40关注 0票数 0

我做这是为了增加存储在我的网站的管理部分。我遇到了一个很奇怪的问题。$voorraad总是等于7,不管我选择了什么产品(id更改),它总是以7的形式出现。

我是通过创建一个会话并将其回显到另一个页面来回显$voorraad。表名和列是正确的。有人能解释为什么$voorraad总是等于7吗?如果你需要更多的代码,我会提供它。

代码语言:javascript
复制
 $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);

        }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-11 08:07:10

因为要将mysql响应对象转换为浮点数,所以实际上没有得到结果。

代码语言:javascript
复制
$voorraad = mysql_query($sql);
$voorraad = mysql_fetch_assoc($voorraad)['voorraad']; // get the row, and the cell from the row

$voorraad现在应该包含实际的响应。

票数 1
EN

Stack Overflow用户

发布于 2017-05-11 08:07:55

首先:您对SQL注入非常开放。在将用户输入传递给查询之前,对其进行筛选和验证。

第二件事:不要使用mysql_*,它已经过时,被认为不再安全了。使用mysqli_*或PDO代替。

mysql_query()返回一个resource,您尝试将其转换为float。要访问必须使用的值,请使用

代码语言:javascript
复制
$result = mysql_query(....);
$row = mysql_fetch_array($result);
$voorraad = $row['voorraad'];
票数 0
EN

Stack Overflow用户

发布于 2017-05-11 08:10:59

首先,不推荐使用mysql_*-functions,如果您更新了php版本,就不能再使用它们了。第二,您应该使用准备好的语句,以防止sql注入。

回到您的主要问题:执行查询,但永远不会获取结果,因此您只需将resource返回类型转换为浮点数,这将为您提供意外的结果。在您的例子中,您可以使用mysql_fetch_assoc获取行,您希望

因为要将mysql响应对象转换为浮点数,所以实际上没有得到结果。

代码语言:javascript
复制
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$column = $row['column_name'];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43909662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档