准备好的声明+ MySQL(7天统计)

时间:2013-07-17 22:11:50

标签: php mysql multidimensional-array prepared-statement

我目前正在开展一个项目,在这个项目中,我需要为用户创建的每个单独对象存储7天的数据,每个对象都有唯一的ID以及用户。我想这更像是“我该怎么做呢?”与“我做错了什么?”我的目标 是一次保留7天的统计数据,并能够根据他们的object_id将它们打印到jqPlot或其他图形库中。

enter image description here

我目前获取数据的代码并不太远。我刚刚开始使用预处理语句,我还没有完全理解从查询中获取结果的方法。

$stmt = $mysql->prepare("SELECT `date`, `impressions`, `clicks`, `object_id` FROM `object_stats` WHERE `user_id` = ?") or die(mysql_error());
$stmt->bind_param("s", $_SESSION['user_id']);
$stmt->execute();
$stmt->bind_result($date, $impressions, $clicks, $object_id);
$stmt->close();

从那里我将把结果放到一个多维数组中,并为每个object_id创建一个数组,但我不知道从哪里开始,我尝试使用谷歌搜索类似的解决方案,但我没有遇到任何东西。如果我没有完全传达我的问题,我很抱歉,我很难说出来。感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

尝试使用PDO,它有一些非常酷的功能,例如只需简单的提取就可以将数据提取到多维数组中;这可能就是你要找的东西。

查看本教程:

  

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

我今天很开心,并会为您提供一些示例代码:

$sth = $dbh->prepare('SELECT `object_id`, `date`, `impressions`, `clicks`  FROM `object_stats` WHERE `user_id` = ?');
$sth->execute(array($_SESSION['user_id']));

$data = $sth->fetchAll(PDO::FETCH_COLUMN | PDO::FETCH_GROUP);

答案 1 :(得分:1)

你可以试试像 -

$object_id_array = array();
while ($stmt->fetch()) {
    $object_id_array[$object_id][] = array('date'=> $date, 
                                           'impressions'=>$impressions,
                                           'clicks'=>$clicks);
}

这将在$stmt->bind_result(...)之后,但在$stmt->close();之前。

请注意,or die(mysql_error());末尾的$stmt = $mysql->prepare(...)不会对您的mysqli OO有效。请查看http://www.php.net/manual/en/mysqli-stmt.error.php,了解如何获取错误。