2012-03-15 111 views
0

我試圖從位於兩個日期之間的表中獲取所有行。作爲測試,我把我的兩個變量,使2000年至2020年之間的所有內容將顯示,但我遇到了一個錯誤:「where子句」中的未知列'DATE_START_SELECTED'

Unknown column 'DATE_START_SELECTED' in 'where clause' 

這是我使用的代碼:

$DATE_START_SELECTED = new DateTime('2000-01-01 05:59:00'); 
$DATE_END_SELECTED = new DateTime('2020-03-15 09:30:00'); 


$query = 'SELECT * FROM events WHERE DATE_START_SELECTED <= start_datetime AND end_datetime < DATE_END_SELECTED'; 
$result = mysql_query($query) or die(mysql_error()); 

知道爲什麼?謝謝:)

+1

你$查詢字面上包含%DATE_START_SELECTED%,這是無效的... – Aknosis 2012-03-15 16:10:38

+0

啊哈,我不知道這一點,我很抱歉 - 我會再更新我的問題:) – pufAmuf 2012-03-15 16:15:41

回答

1

您正在使用對象

$DATE_START_SELECTED = new DateTime('2000-01-01 05:59:00'); 
$DATE_END_SELECTED = new DateTime('2020-03-15 09:30:00'); 

最好的辦法是你必須給它的SQL轉換爲字符串,如

$DATE_START_SELECTED = '2000-01-01 05:59:00'; 
$DATE_END_SELECTED = '2020-03-15 09:30:00'; 

然後,更改到

SELECT * FROM events 
WHERE 
start_datetime >= '$DATE_START_SELECTED' 
    AND 
end_datetime < '$DATE_END_SELECTED' 

DATE_START_SELECTED是字符串,
在SQL模式下會重新FER列名,表名或數據庫名

$DATE_START_SELECTED是PHP變量

+0

非常感謝!在這種情況下,我可以完全丟棄*新的DateTime *並使用顯示的字符串代碼? – pufAmuf 2012-03-15 16:30:35

+0

我想是這樣的...... – ajreal 2012-03-15 16:33:14

+0

你是最棒的,謝謝! – pufAmuf 2012-03-15 16:37:38