2014-12-04 79 views
2

「選擇更新」我的查詢= SELECT @condi:=id FROM table WHERE id>1 LIMIT 1 for UPDATE; UPDATE table set aa="ok" WHERE [email protected]查詢在笨

我用$this->db->query(query)但笨信息錯誤 「您的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊在'update table set aa =「ok」附近使用正確的語法,其中id = @第1行「condi」 Miss「;」 我用phpmyadmin execuse此查詢,它的結果行正確不會報錯查詢

說不定核心笨錯誤,你可以幫我execuse我的笨查詢,謝謝

+1

$這個 - > DB->查詢(查詢) 變化 $這個 - > DB->查詢($查詢) – virendra 2014-12-04 08:40:21

+0

據我所知笨的活動記錄不支持SELECT UPDATE語句。所以可能唯一的解決方案是使用query()函數並構建自己的語句。 – sznowicki 2015-04-12 18:57:36

回答

1

你可以嘗試使用查詢生成器來防止SQL錯誤:

$query = $this->db->select() 
      ->from('table') 
      ->where('id >', 1) 
      ->limit(1) 
      ->get_compiled_select(); 
$data = $this->db->query("{$query} FOR UPDATE")->row_array(); 

$this->db->where('id', $condi)->update('table', ['aa'=>'ok']); 

因爲笨3建設者不支持FOR UPDATE,所以我只是用編譯器重新查詢。

Codeigniter get_compiled_select()