[前][次][番号順一覧][スレッド一覧]

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]