2012-11-27 23 views
1

我正在使用此代碼來選擇日期少於某一天的某些行。當我在sql中放入<=(小於)會引發一個致命錯誤。它只有在加入=時才起作用(沒有錯誤,但結果錯誤)。當添加少於比較器時mysqli prepare語句的致命錯誤

我使用PHP-的MySQLi - 數據庫級從https://github.com/ajillion/PHP-MySQLi-Database-Class

$params = array($id, $day, $day); 
$results = $db->rawQuery(" 
     SELECT * 
     FROM `forecasts` 
     WHERE `geonameid`=? and (DAY(time_from) <= DAY(?) 
     OR DAY(time_to) <= DAY(?))", $params); 

Fatal error: Problem preparing query (SELECT * FROM forecasts WHERE geonameid =? and (DAY(time_from)) 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 ''

我做錯了嗎?

+0

替換此行是否確實有比較運算符對不對在我看來你想要: WHERE'geonameid' =?和(DAY(time_from)> = DAY(?) OR DAY(time_to)<= DAY(?))「,$ params) – johnyTee

+0

究竟是不是我寫的? –

+0

我在time_from後改了一個<= to > = – johnyTee

回答

3

看起來像是PHP-MySQLi-Database-Class的問題。 101線,功能rawQuery

$this->_query = filter_var($query, FILTER_SANITIZE_STRING); 

這個功能帶標籤,並導致您所查詢的是

SELECT * FROM `forecasts` WHERE `geonameid`=? and (DAY(time_from) 

,所以你可以只用

$this->_query = $query;