【问题标题】:PHP array not saving values as I expectedPHP数组没有像我预期的那样保存值
【发布时间】:2015-02-12 01:04:00
【问题描述】:

今天我正在用 PHP 重新编写一个旧程序,我使用数组来更好地组织它。 编码后,当我测试它时,我意识到数组没有像我预期的那样保存值。 (我是 PHP 新手)

这是我定义数组的方式:

/* Mysql settings */
$mysql = array();

$mysql['track'] = array();
$mysql['track']['visitors'] = array();
$mysql['track']['visitors']['query'] = "SELECT `uid`, `referer` FROM `track` WHERE (`time` >= '".$time['request']['start']."' AND `time` < '".$time['request']['end']."') GROUP BY `uid`";

我使用 var_dum 查看值是如何保存并发出 mysql 请求的:

var_dump($mysql['track']);
...
mysql_query($mysql['track']['visitors']['query']);

这是输出:

array(1) {
  ["query"]=>
  string(71) "SELECT `request` FROM `track` WHERE (`time` >= '' AND `time` < '86400')"
}
Query was empty

谁能告诉我为什么会这样? 我以错误的方式使用数组? 我应该如何将它们用于此目的?

【问题讨论】:

  • 您的查询字符串在:$mysql["track"]["visitors"]["query"] 而不是$mysql["track"]["visitors"]

标签: php mysql arrays save


【解决方案1】:

根据 var dump,您的查询存储在 ['query'] 数组中,但您的 mysql_query 使用的是 ["track"]。尝试将您的查询切换到 ['query'] 数组。

另外请开始使用 mysqli 而不是 mysql,因为后者已被弃用。正如你所说,这是旧代码,所以我不确定你是否知道,但我想我至少会说出来。

【讨论】:

  • 对不起,我在写这个答案时粘贴了错误的代码。我已经更正了第二个代码:mysql_query($mysql['track']['visitors']['query']);
  • 关于mysql,我知道,但我只是在测试构建功能,对mysqli功能还不熟悉,所以暂时不重要。
【解决方案2】:

问题解决了!我错过了看到我稍后在代码中使用了相同的数组 $mysql['track'] ,它正在删除其中的值! 抱歉,我确实从中学到了一些东西。

【讨论】:

    猜你喜欢
    • 2016-06-19
    • 2013-04-11
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    • 2020-03-11
    相关资源
    最近更新 更多