0

我有以下查询:

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。上述查询有效。副作用是代码值不能以“<”开头,这应该是可以接受的,但 order by 会将其误认为是 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 Array 不匹配?” MySQL 中的错误。看来? 内部<?xml文字被误认为是绑定目标。我正在传递 2 个要绑定的值 - 这又是正确的。

所以我的问题是 - 我如何让<?xml文字不会被误认为是绑定值目标???

4

1 回答 1

0

解决了

事实证明,这是 phpLens 的 ADODB 界面中的错误,而不是 MySQL 本身中的错误。它存在于 PHP5 的当前版本 5.17 中。

于 2012-08-24T14:42:38.087 回答