0
我看了一整天的答案并尝试了我所有的想法。 我在做什么看起来很简单,但对我来说非常困难。 我必须在不安装其他Perl模块的情况下执行此操作。Perl和MYSQL - 在年,日,月,小时之间选择数据:分钟:秒(unix?)样式时间戳
我想选择两个日期之间输入的名称列表。 我知道这些例子显然不严格或安全,但我只是想弄明白。 一旦我找到了解决我所需结果的方法,我会解决所有这些问题。
为$到和$从传入的数据例如:
$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的页面中。我相信这与日期格式有关。不,我无法更改数据库中的日期格式。
非常感谢。
您的错误表明connect()调用失败。你能用Perl DBI执行任何成功的查询吗? – Josh 2013-03-07 22:22:38
@Josh我会仔细检查。 – OldDogLearningNewPerlTricks 2013-03-07 22:26:15
你的'$ sdb'字符串是怎么样的?有点像'dbi:mysql:your_database'?正如乔什所说,连接似乎失败了。添加一个“die”并查看错误消息。 ('$ names = DBI-> connect(“$ sdb”,“$ user”,“$ password”)或者死于$ DBI :: errstr;') – Demnogonis 2013-03-07 22:26:39