2012-05-29 131 views
0

我正在使用mysql和php將所有用戶從mysql數據庫中提取出來,這些數據等於今天的日期。我遇到的問題是每當我運行下面的代碼,我得到一個錯誤。從錯誤的角度來看似乎與年度有關,或者它不喜歡它中的點,但我不確定。將今天的日期與數據庫中列出的日期進行比較

<?php 
$today = date("d.m.y"); 
$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe 
WHERE date=$today")or die(mysql_error()); 

while($row = mysql_fetch_array($result)) 
    { 
    echo $row['name'] . " " . $row['email']. " " . $row['date']; 
echo "<br />"; 
    } 

    ?> 

這是它引發錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near '.12' at line 2 
+0

放在引號和反引號添加迄今:''date' =「$ today'' –

+0

什麼類型是你的'date'列在數據庫中? –

+0

嘗試替換WHERE date ='$ today';在查詢 – Gntem

回答

1

你得周圍添加您的日期字符串引號:

$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe 
WHERE date='$today'")or die(mysql_error()); 
+0

Thankyou!,現在完美的工作:-) –

1

需要在你的$today變量的報價。因爲它是保留的,所以還需要反撥date列名稱。

$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe 
     WHERE `date`='$today'")or die(mysql_error()); 
2

首先,$今天應該作爲一個字符串轉換成SQL查詢:

mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE `date` = '$today'"); 

date是SQL保留字,所以它必須與反引號進行轉義...

但我電子書籍使用MySQL原生函數和常量像NOW()CURRENT_TIMESTAMPSYSDATE等等

SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE `date` = NOW() 
SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE `date` < NOW() - INTERVAL '2' DAYS 
SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE `date` > NOW() + INTERVAL '5' HOURS 

etc ...

+0

假設'日期'列實際上是'日期'類型 –

+0

@AaronW。當然:-) – shadyyx

+0

:)我有同樣的想法,但基於正在使用的字符串格式,我不知道。可能需要爲'date'添加反引號至您的第二組代碼 –

0

如果您在mysql中使用timestamp作爲數據類型,那麼您需要首先將日期轉換爲unix時間戳。

$today = strtotime("now"); 

,或者如果你正在使用datetime或日期型數據,然後正確格式爲

YY-MM-DD, so you need to create the date accordingly. 

$today = ('Y-m-d'); 

以及在查詢你缺少單引號。

"SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE date = '$today'" 

但是,您可以使用MYSQL NOW()直接使用PHP的日期函數來比較日期。

SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe WHERE date = NOW() 
0

嘗試

$today = date("d-m-Y"); 

OR

$today = date("Y-m-d"); 

此外,檢查日期列的格式等於date()返回值的格式。

如果您已使用DATETIME數據類型,則可能需要使用匹配格式。

而且,單引號包裹的日期值...

$result = mysql_query("SELECT * FROM ymeg_chronoforms_data_NewsletterSubscribe 
WHERE date = '" . $today . "'") 
相關問題