【问题标题】:Setting dynamic array key in while loop php在while循环php中设置动态数组键
【发布时间】:2015-03-07 08:00:40
【问题描述】:

我有这个代码

$query = "SELECT `subscriberid`,`data` FROM `****table_name*****`"
    . "WHERE `subscriberid` IN (123,456,789,101)";
$result = $cxn->query($query);
$Points = array();
while ($row = $result->fetch_assoc()) {
  $Points[$row['subscriberid']] = $row['data'];
}

我希望 $Points 的键是订阅者 ID,但是当我打印出 $Points 时,我不断得到默认键 0-3,我看不出有任何原因发生这种情况。

【问题讨论】:

  • 您确定$Points 没有在其他地方声明吗? IE;这是一个独特的变量?此外,您可以在该字段上尝试别名:"SELECT subscriberid AS sid, data FROM... 然后使用 $row['sid']
  • 请您在 while 循环之间创建一个 var_dump($Points)var_dump($row)
  • 另外,你应该只在有结果的情况下进行迭代;将 while... 循环包装在 if ($result = $cxn->query($query)) {} 中,而不仅仅是 $result = $cxn->query($query);

标签: php arrays dynamic while-loop


【解决方案1】:

感谢@Jongosi 的评论,关于if ($result = $cxn->query($query)) 部分。

您的查询目前如下:

$query = "SELECT `subscriberid`,`data` FROM `****table_name*****`"
    . "WHERE `subscriberid` IN (123,456,789,101)";

如果您只编辑了****table_name*****,则缺少一个空格(*WHERE 之间的)。

您的结果将是空的或错误的。

$query = "SELECT `subscriberid`,`data` FROM `****table_name*****`"
    . " WHERE `subscriberid` IN (123,456,789,101)";

【讨论】:

  • 好吧,经过多次测试,我意识到我已经正确地编写了所有内容。我将所有内容打印在一个文档中,该文档与运行此方法的类位于同一文件夹中。当我使用 nusoap 作为 Web 服务在两个不同的服务器上运行这些方法时,我发现我的问题发生了。我在想 nusoap 正在以某种方式转换我的数组,因为我的键正在被重新解释并且以完全错误的方式。这仍然是一个谜。
猜你喜欢
  • 1970-01-01
  • 2012-02-21
  • 1970-01-01
  • 2011-04-11
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
相关资源
最近更新 更多