MySQL - 按查询

时间:2016-03-31 09:32:40

标签: php mysql pdo

我需要知道是否有机会从MySQL PDO查询中获取PHP5数组:

Array = (
    keywordID = 1321,
    keyword = "Its a test",
    position = Array(
        today = 12,
        month = 17
    )
)

现在我有了这个MySQL查询:

    $sql = "SELECT
                keywords.id AS keywordID,
                keywords.keyword,
                statistic.position
            FROM
                keywords
            LEFT JOIN statistic ON (statistic.kid = keywords.id)
            WHERE
                keywords.uid = ? AND statistic.date IN (?, ?)";
    $stmt = WPStatsDB::getInstance()->prepare($sql);
    $stmt->execute(array($array['userID'], date("d.m.Y", time()), date("d.m.Y", strtotime('-30 days'))));
    $result = $stmt->fetchAll();

这是var_dump($ result)的当前结果:

这是其中一项结果。我试着在我的帖子中写下来。

array(244) {
...

[1]=>
  array(6) {
    ["keywordID"]=>
    string(4) "1978"
    [0]=>
    string(4) "1978"
    ["keyword"]=>
    string(20) "Weiterbildung in NRW"
    [1]=>
    string(20) "Weiterbildung in NRW"
    ["position"]=>
    string(2) "38"
    [2]=>
    string(2) "38"
  }
...
}

编辑1:

我需要将属性position作为数组,其中两个值不是int,只有一个值。我需要将位置作为数组,使用两个属性来减少数据库查询。 今天和月是具有今天位置和今天一个月前的位置信息的值。

编辑2:

抱歉,我忘了说我无法编辑此表。表统计信息包含连接到每个域的每个关键字的每天统计信息。它非常大。

我真的不知道如何解决这个问题。

感谢您的帮助!! : - )

2 个答案:

答案 0 :(得分:0)

是的,你可以。使用任何ORMlist of examples

答案 1 :(得分:0)

有争议的是,在很多情况下,对关系进行单独查询的速度更快。

你要么

1)获得每个职位的一行,并在得到结果后处理它

2)为每个关键字转到一个循环,并在每个关键字的单独查询中获取位置

3)您在MySQL中按关键字ID执行分组,并使用group_concat之类的内容检索位置。然后你可以解析它。这似乎更快,但可能取决于您的数据集,可能不如您预期的那样好。