mysql:5957
From: TATSUYA <TATSUYA <tatsuya@xxxxxxxxxx>>
Date: Sun, 18 Aug 2002 21:58:50 +0900
Subject: [mysql 05957] Re: Perl + MySQL でのメタ文字の扱い方
S-Lines.netのTATSUYAです。 私信でいただきましたがMLに戻します。 「"TOYOSHIMA, Masayuki" <mtoyo@xxxxxxxxxx>」 さんの 「Re: [mysql 05956] Perl + MySQL でのメタ文字の扱い方」 への返信です。 > PHP は存じませんが、perl の場合は、 > > my($s)= "SELECT some_field FROM some_DB WHERE (a LIKE 'XYZ' and b LIKE 'ABC')"; > my($p)= $db->prepare($s); > $p->execute(); > > のかわりに > > my($s)= "SELECT some_field FROM some_DB WHERE (a LIKE '?' and b LIKE '?')"; > my($p)= $db->prepare($s); > $p->execute("XYZ","ABC"); > > とする事が出来ます。この '?' を place holder といいます。この時、 > > $p->execute("Bridget Jones's Diary","last year's best-selling DVD") > > などとする事も可能で ' の escape は不要です。 アドバイスありがとうございます。 当方、 $db->do("INSERT INTO $conf{'m_table'} SET no_res=''"); このようにINSERTをしているため、すべてを上記のように変更することが大変なため、 MySQLのマニュアルで見つけた以下4つをエスケープして対応することにしました。 > NUL ASCII 0。`\0' (バックスラッシュと ASCII `0' 文字) に置き換えるべきです。 > \ ASCII 92, バックスラッシュ。`\\' と表記してください。 > ' ASCII 39, 引用符。`\'' と表記してください。 > " ASCII 34, 二重引用符。`\"' と表記してください。 ありがとうございました。 --- TATSUYA E-Mail : tatsuya@xxxxxxxxxx W e b : http://TATSUYA.info/ Flet's ADSL + FreeBSD HomeServer -> http://www.S-Lines.net/
-> 5957 2002-08-18 21:58 [TATSUYA <tatsuya@xxx] Re: Perl + MySQL でのメタ文字の扱い方 5962 2002-08-19 06:24 ┗["KAWAI,Takanori" <GC] 5967 2002-08-19 13:24 ┗[SUGAWARA Hajime <sug]