我整天都在寻找答案,并尝试了我所有的想法。我正在做的事情看似容易,但对我来说非常困难。我必须这样做而不安装额外的 Perl 模块。
我正在尝试选择在两个日期之间输入的名称列表。我知道这些示例显然不严格或不安全,但我只是想弄清楚。一旦我找到了达到所需结果的方法,我将在稍后解决所有这些问题。
$to 和 $from 的传入数据示例:
$to= '2013-03-01 00:00:01';
$from= '2013-03-01 23:23:59';
数据库中的entered
列也是这种格式。
我试过了:
$names = DBI->connect("$sdb","$user","$password");
$getnames = $names->prepare(qq{SELECT DISTINCT `name`
FROM `users`
WHERE `entered`
BETWEEN UNIX_TIMESTAMP($from)
AND UNIX_TIMESTAMP($to)
AND `active` = ?
AND `confirmed` = ?
ORDER BY `entered` DESC});
$getnames->execute($active,$confirmed);
我试过了:
$names = DBI->connect("$sdb","$user","$password");
$getnames = $names->prepare(qq{SELECT DISTINCT `name`
FROM `users`
WHERE `entered` BETWEEN ?
AND ?
AND `active` = ?
AND `confirmed` = ?
ORDER BY `entered` DESC});
$getnames->execute($from,$to,$active,$confirmed);
我也尝试了上述两种方法的许多变体,但我不断得到:
Can't call method "prepare" on an undefined value at users-by-date.pl line 120 even when I hard code the variables.
有人可以告诉我如何做到这一点吗?我的查询在 phpmyadmin 中执行得很好,但是我需要使用 Perl 将结果打印到页面上。我相信这与日期格式有关。不,我无法更改数据库中的日期格式。
非常感谢。