2015-09-08 222 views
2

我已將日期以d/m/y格式存儲在數據庫中。我如何將它與當前日期進行比較? 這是我的代碼。但它沒有正常工作。數據庫與當前日期的日期比較

<!DOCTYPE html> 
<html> 
<body> 
<?php 
session_start(); 
include_once 'dbconnect.php'; 

date_default_timezone_set("Asia/Dhaka"); 
$t=time(); 
$d=date("d/m/Y"); 
$bar=date("l"); 
$time=date("h:i:sa"); 

$result=mysql_query("SELECT * FROM seminar WHERE date >= '$d'"); 
$cnt=mysql_query("SELECT COUNT(*) FROM seminar WHERE date >= '$d'"); 
$find=mysql_fetch_row($cnt); 
$num=$find[0]; 
while($uRow=mysql_fetch_assoc($result)) 
{ 
    echo "A Seminar on ".$uRow['about']." will be held in ".$uRow['place'] ."  at".$uRow['time'].",".$uRow['date']."<br><br>"; 
} 
//mysql_query("DLETE FROM seminar WHERE date < '$d'"); 
    ?> 
    </body> 
    </html> 
+0

你好,歡迎來到Stack Overflow!請添加更多詳細信息 - 某些「不起作用」的信息不是很有用。它會給出任何錯誤嗎?它有什麼作用?它應該做什麼? – Anders

+0

你可以提供一個存儲在數據庫中的日期,我們可以看到它的格式,你在編寫數據庫表單的同時比較了d/m/Y *大寫字母Y – alamnaryab

+0

如果可以,應該[停止使用'mysql_ *'函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。他們不再被維護,並[正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。瞭解[準備](http://en.wikipedia.org/wiki/Prepared_statement)[聲明](http://php.net/manual/en/pdo.prepared-statements.php),並考慮使用PDO ,[這真的不難](http://jayblanchard.net/demystifying_php_pdo.html)。 –

回答

3

你並不需要獲得在PHP中的日期,你可以使用SQL:

SELECT * FROM seminar WHERE date >= CURDATE() 

更多​​。

如果你的日期存儲爲字符串(因爲你的問題似乎暗示)而不是日期,你應該考慮將它們存儲爲日期。如果由於某種原因,是不是一種選擇,你可以這樣做:

SELECT * FROM seminar WHERE STR_TO_DATE(date, '%d/%m/%Y') >= CURDATE() 

而且,你不應該使用mysql_*功能,因爲它們已被取消,容易SQL injection attacks。改用MySQLi或PDO。

另外,不需要額外的查詢來計數。只需檢查第一個查詢影響的行數。如果您使用MySQLi,請使用mysqli_affected_rows()

0

它,因爲日期格式(01/01/2015' 小於'31/01/1970年)

我現在不能檢查,但必須努力:

$d=date("Y-m-d"); 
$result=mysql_query("SELECT * FROM seminar WHERE DATE_FORMAT(date,'%Y-%m-%d') >= '$d'"); 
$cnt=mysql_query("SELECT COUNT(*) FROM seminar WHERE DATE_FORMAT(date,'%Y-%m-%d') >= '$d'"); 
1
<!DOCTYPE html> 
    <html> 
    <body> 
    <?php 
    session_start(); 
    include_once 'dbconnect.php'; 

    date_default_timezone_set("Asia/Dhaka"); 
    $t=time(); 
    $d=date("d/m/Y"); 
    $bar=date("l"); 
    $time=date("h:i:sa"); 

    $result=mysql_query("SELECT * FROM seminar WHERE DATE_FORMAT(`date` , '%d-%m-%Y') <= '$d'"); 
    $cnt=mysql_query("SELECT COUNT(*) FROM seminar WHERE DATE_FORMAT(`date` , '%d-%m-%Y') >= '$d'"); 
    $find=mysql_fetch_row($cnt); 
    $num=$find[0]; 
    while($uRow=mysql_fetch_assoc($result)) 
    { 
     echo "A Seminar on ".$uRow['about']." will be held in ".$uRow['place'] ."  at".$uRow['time'].",".$uRow['date']."<br><br>"; 
    } 
    //mysql_query("DLETE FROM seminar WHERE date < '$d'"); 
     ?> 
    </body> 
    </html> 
相關問題