我需要知道是否有机会像这样从 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/