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