php - MySQL - 通过查询返回关联数组

标签 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:

我需要属性位置作为具有两个值的数组而不是只有一个值的 int。我需要 position as array 具有两个属性以减少数据库查询。 Today 和 Month 是包含今天的位置信息和一个月前的今天的位置信息的值。

编辑 2:

对不起,我忘了说我不能编辑这张表。表格统计包含连接到每个域的每个关键字每天的统计信息。它很大。

我真的不知道该如何解决。

感谢帮助!! :-)

最佳答案

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

你要么

1)每个位置取一行,得到结果后处理

2) 对每个关键字进行循环,并在每个关键字的单独查询中获取位置

3) 您在 MySQL 中按关键字 id 进行分组,并使用类似 group_concat 的方法检索位置。之后您可以解析它。这可能看起来更快,但可能取决于您的数据集,并且可能不如您预期的那么好。

关于php - MySQL - 通过查询返回关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36329492/

相关文章:

php - 使用 PDO 语句选择表数据

php - PDO 没有连接到远程 mysql 数据库

php - 多个模型与单个模型

javascript - 通过 $post 在 jquery 中发布隐藏的输入值

mysql - 使用 ruby​​ 和 MAMP 作为本地服务器访问 SQL

php - 使用其他两个表更新表

php - WordPress Gutenberg 中的 "Sorry, this content could not be embedded"错误?

php - 是否有任何特殊规则使用 foreach 和 while 循环(使用 each() 函数)在 php 中迭代数组?

PHP 和 MySQL - 如果第一个值是 (,),如何删除它

mysql - 在使用 DB::raw 的 laravel 5 中,如何检索 mysql_info()?