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 が含まれることもあるテーブルを処理しています。上記のクエリは機能します。副作用として、コード値を「<」で開始することはできますが、これは受け入れられるはずですが、順序によって 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 does not match ?」で失敗します。MySQLのエラー。? 内部<?xmlリテラルがバインド ターゲットと間違われています。そして、バインドする2つの値を渡しています-これも正しいです。

だから私の質問は -<?xmlリテラルをバインド値ターゲットと間違えないようにするにはどうすればよいですか?

4

1 に答える 1

0

解決した

これは phpLens からの ADODB インターフェイスのバグであり、MySQL 自体のバグではないことが判明しました。PHP5の5.17である現在のバージョンに存在します。

于 2012-08-24T14:42:38.087 に答える