【发布时间】:2012-03-07 15:54:03
【问题描述】:
我正在创建一个函数来从数据库中获取不同玩家的统计数据,并且我需要能够将统计数据的时间尺度指定为函数的变量之一 - 它类似于“月”或“年”。
我在使用 EXTRACT() 创建 SQL 查询以比较记录时间戳和当前时间方面取得了一些成功,但我似乎无法使用 PDO 变量来更改每个函数调用。
任何想法我做错了什么?或者这只是bindParam()的限制?
function get_player_stats($player_id, $timescale) {
global $pdo;
$query = $pdo->prepare('
SELECT count(results.winner)
FROM results
WHERE results.winner = :player_id
AND EXTRACT(:timescale FROM results.date) = EXTRACT(:timescale FROM NOW())
LIMIT 1
');
$query->bindParam(':player_id', $player_id);
if ($timescale = 'this_month') {
$query->bindParam(':timescale','YEAR_MONTH');
}
else if ($timescale = 'this_year') {
$query->bindParam(':timescale','YEAR');
}
$query->execute();
return $query->fetchAll(PDO::FETCH_OBJ);
}
附:这是一个 MySQL 数据库
【问题讨论】: