2012-09-01 53 views
-2
SELECT `id`, `name_person`, `person_content`, `datetime` 
FROM (`achievers_unverified`) 
WHERE ` name_person LIKE '%ved%' 
    OR ` person_content LIKE '%ved%' LIMIT 10 

這是我試圖使用的SQL查詢,其中ved是搜索詞。Mysql與類似和或類似的問題

我開了一個1064錯誤。

生成它的代碼碼是。

$this->db->select($select) 
      ->from($table) 
      ->like($str[1], $query, 'both') 
      ->or_like($str[2], $query, 'both') 
      ->limit($offset+10, $offset); 

這是錯誤:

您的SQL語法錯誤;檢查 對應於你的MySQL服務器版本正確的語法在行中使用 附近「person_content LIKE‘%粘彈性阻尼%’LIMIT 10」 3.

$str = explode(",", $select); 
where $select = id, name_person, person_content, datetime 
+2

'$ str [2]'和'$ str [1]'究竟是什麼? –

+3

什麼是WHERE和OR之後的隨機剔號? –

+0

我用你的代碼測試了這個,並沒有得到這個結果,我得到了正確的結果。您是否100%確定此代碼是導致問題的原因,並且您是否嘗試過對值進行硬編碼而不是使用變量?你使用的是什麼版本的Codeigntier? –

回答

1

找到解決方案使用修剪手冊($ str [0])和trim($ str [1]),sapce正在創建問題。

+0

阿哈你是對的!當我測試你的查詢時,我正在使用Datamapper ORM,它顯然會自動處理這個問題,當我用直接ActiveRecord嘗試時,它會導致相同的錯誤。抱歉懷疑你而不是產生一個準確的測試用例。所以,你的字段名稱是不正確的,因爲他們有額外的空格字符。 –