Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl和MYSQL—选择年-月-日-小时:分钟:秒(unix?)样式的时间戳之间的数据_Mysql_Perl_Date - Fatal编程技术网

Perl和MYSQL—选择年-月-日-小时:分钟:秒(unix?)样式的时间戳之间的数据

Perl和MYSQL—选择年-月-日-小时:分钟:秒(unix?)样式的时间戳之间的数据,mysql,perl,date,Mysql,Perl,Date,我一整天都在寻找答案,也尝试了我所有的想法。 我所做的似乎很容易,但对我来说却很难。 我必须在不安装额外Perl模块的情况下执行此操作 我正在尝试选择在两个日期之间输入的姓名列表。 我知道这些例子显然不严格也不安全,但我只是想弄清楚。 等我找到达到所需结果的方法后,我会解决所有这些问题 $to和$from的传入数据示例: $to= '2013-03-01 00:00:01'; $from= '2013-03-01 23:23:59'; 数据库中输入的列也采用该格式 我试过: $names =

我一整天都在寻找答案,也尝试了我所有的想法。 我所做的似乎很容易,但对我来说却很难。 我必须在不安装额外Perl模块的情况下执行此操作

我正在尝试选择在两个日期之间输入的姓名列表。 我知道这些例子显然不严格也不安全,但我只是想弄清楚。 等我找到达到所需结果的方法后,我会解决所有这些问题

$to和$from的传入数据示例:

$to= '2013-03-01 00:00:01';
$from= '2013-03-01 23:23:59';
数据库中输入的
列也采用该格式

我试过:

$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将结果打印到页面上。我相信这与日期格式有关。不,我无法更改数据库中的日期格式

非常感谢

$names = DBI->connect("$sdb","$user","$password");
应该是

$names = DBI->connect($sdb, $user, $password) or die "Couldn't connect to database: $!";
添加
或模具…
零件有两个目的:

1) 它将立即停止您的程序,防止您在以后尝试使用数据库句柄时出现错误,而真正的问题是它无法连接到数据库

2) 它将告诉您数据库连接失败的原因。(数据库的错误消息将显示在
$!
中)


我还删除了变量周围的双引号,因为它们不需要。

您的错误表明connect()调用失败。你能用Perl DBI执行任何成功的查询吗?@Josh我会仔细检查。你的
$sdb
字符串是什么样子的?类似于
dbi:mysql:your_数据库
?正如Josh所说,连接似乎失败了。添加一个
die
并查看错误消息。(
$names=DBI->connect(“$sdb”、“$user”、“$password”)或die$DBI::errstr;
)是的,这是第一个问题。很奇怪。不是远程的,而是本地主机。在同一个目录中,我有另一个脚本连接到远程服务器,代码相同,没有问题。这台电脑无法连接到它的服务器!尝试了ip、域和本地主机,但无效。($sdb='DBI:mysql:root_db1:localhost:3306';)我会再打给你。