2013-08-27 46 views
0

我有以下查詢:PHP無法解析查詢,但通過PMA運行是成功的

UPDATE users_login SET LastLogin= CONCAT(CURDATE(), ' ', CURTIME()) WHERE Username=? 

這時候我通過這個進我的PHP的mysqli查詢構建失敗。但通過PMA查詢:

UPDATE users_login SET LastLogin= CONCAT(CURDATE(), ' ', CURTIME()) WHERE Username='Sophie' 

我不知道爲什麼這是失敗。

錯誤消息:

你有一個錯誤的SQL語法;檢查手冊中 對應於你的MySQL服務器版本正確的語法使用 附近「」「 CURTIME()))其中username =‘Shophie’」在1號線

確切的代碼是如下:

$Update_Parameter = array($_POST['Username']); 

     $Database->rawQuery("UPDATE users_login SET LastLogin = CONCAT(CURDATE(), ' ', CURTIME())" 
      ,$Update_Parameter); 

我正在將外包給MySQLi Wrapper,這是我認爲更簡單的查詢方法。 https://github.com/ajillion/PHP-MySQLi-Database-Class

+0

請問我們能否看到錯誤信息? – MaveRick

+0

你是什麼意思解析查詢? – Imran

+0

@MaveRick查看我的更新 –

回答

1

您正在使用的mysqli包裝類有一個錯誤。

在方法MysqliDb::rawQuery()有這行代碼:

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

它會變成你的查詢字符串

UPDATE users_login SET LastLogin= CONCAT(CURDATE(), ' ', CURTIME()) WHERE Username=? 

成這樣:

UPDATE users_login SET LastLogin= CONCAT(CURDATE(), ' ', CURTIME()) WHERE Username=? 
//the single quotes now become '    ^^^^^ ^^^^^ 

然後這個字符串傳遞到mysqli::prepare(),導致語法錯誤。

我建議你使用更成熟的圖書館,如果你正在做認真的工作。

+0

優秀的漁獲 –

2

如果你在錯誤仔細看有三)由於某種原因,不知道爲什麼你不得不發佈更多,但肯定的,

CURTIME())) 
UPDATE users_login SET LastLogin= CONCAT(CURDATE(), ' ', CURTIME()) WHERE Username='Sophie' 

哪兒它從何而來?

+0

不知道任何 –

+0

你將不得不發佈更多的代碼,如果你複製並粘貼錯誤信息有一個額外的)在那裏,我不知道從哪裏。 –

+0

我已經更新了我的問題 –