2012-08-23 63 views
0

我有以下查詢:如何將文字「?」在MySQL查詢與綁定變量

select subclasses.id,participants_subclasses.participant_id 
       from subclasses 
       left outer join participants_subclasses on 
       participants_subclasses.participant_id = ? 
       and subclasses.id = participants_subclasses.subclass_id 
      where 
      subclasses.classification_id = ? 
      and subclasses.showhover 
      order by subclasses.seq, 
     IF(LEFT(subclasses.code, 1) = '<', 
    Extractvalue(subclasses.code, "//texts/text/content"), 
subclasses.code) 

上面的查詢正在處理一個表,其中的代碼列有時具有文本和有時具有與標籤中的文本XML。上面的查詢工作。副作用是代碼值不能以「<」開頭,這應該是可以接受的,但順序會將其誤認爲XML內容。下面的查詢將更加具體和準確的:

select subclasses.id,participants_subclasses.participant_id 
      from subclasses 
      left outer join participants_subclasses on 
       participants_subclasses.participant_id = ? 
       and subclasses.id = participants_subclasses.subclass_id 
      where 
      subclasses.classification_id = ? 
      and subclasses.showhover 
      order by subclasses.seq, 
     IF(LEFT(subclasses.code, 5) = '<?xml', 
    Extractvalue(subclasses.code, "//texts/text/content"), 
subclasses.code) 

但是這種變化檢查內容的XML頭失敗,出現「NameInput陣列不匹配?」 MySQL錯誤。看來,這個?在<?xml裏面被誤認爲綁定目標。我傳遞了兩個值來加以約束 - 這又是正確的。

所以我的問題是 - 我怎麼得到<?xml文字不會被誤認爲綁定值的目標?

+1

您是否嘗試用反斜槓轉義問號? – deadly

+0

是的,我試過'<\?xml',仍然有上面的錯誤。 – TJChambers

+0

引號內的問號不應被解釋爲佔位符。你在用什麼語言工作,你如何準備這份聲明? –

回答

0

解決

這原來是從phpLens在ADODB界面中的錯誤,而不是在MySQL的本身。它存在於PHP5當前版本5.17中。