【问题标题】:Set SQL results to SESSION equivalent将 SQL 结果设置为 SESSION 等效项
【发布时间】:2015-02-02 13:43:56
【问题描述】:

表格设置如下:

CID   | FNAM | LNAME | CITY ------> 30 more fields
23432 | John |  Doe  | Denver
54342 | Jane |  Doe  | Boston

当以这种方式获取结果集时(查询将其缩小到 1 个结果):

$data = mysqli_query($con,$query);
$row = mysqli_fetch_array($data);

并使用下面将 $row 中的每个返回列设置为等效的 SESSION 变量

foreach ($row AS $key=>$value) {$_SESSION["$key"]=$value;}

为什么我会得到一个匹配的 $_SESSION 集,其中包含 $key 名称,以及一个 $_SESSION 集,其中每个 $row 设置为会话变量的数组中都有一个数字位置?:

回声 $_SESSION['cid'];结果 23432
回声 $_SESSION['0'];结果 23432

$_SESSION['cid'] 是有意的,但 $_SESSION['0'] 不是

【问题讨论】:

    标签: php session foreach key-value


    【解决方案1】:

    因为您使用的是mysqli_fetch_array 而不是mysqli_fetch_assoc

    但无论如何,您只会从数据库中获得最后一行,因为您总是会覆盖给定的键。遍历字段名,创建一个数组,然后将该数组添加到结果数组中。

    【讨论】:

    • 请在您的回答中添加mysqli_fetch_array() 始终返回数字和关联元素...通过使用标志MYSQLI_ASSOC,您可以更改函数的行为,它的工作原理与@ 987654326@。来源:php.net/manual/en/mysqli-result.fetch-array.php
    • 感谢您指出比我想象的更明显的事情,也感谢您对替代标志的额外评论。
    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多