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

mysql:8177

From: "KAWAI,Takanori" <"KAWAI,Takanori" <GCD00051@xxxxxxxxxx>>
Date: Sat, 30 Aug 2003 21:58:48 +0900
Subject: [mysql 08177] Re: MYSQL UPDATEで「?」を書込と「 NULL 」に化ける

川合孝典です。
#今、新幹線で移動中...

----- Original Message ----- 
From: "山内" <GEG03466@xxxxxxxxxx>
To: <ml@xxxxxxxxxx>
Sent: Saturday, August 30, 2003 11:16 AM
Subject: [mysql 08176] Re: MYSQL UPDATEで「?」を書込と「 NULL」
に化ける


> 川合様
>
>
> 質問内容で明確でなかった部分補足します。
>
> (1)プロダクト   VL
>    ・PERL        5.005_03
>       ・DBI         1.14
>       ・DBD::mysql  2.0400
率直にいって骨董品に近いですねぇ...。
いずれにしても新しいバージョンに移ることを検討されたほうがよいのでは
思われます。DBIの対象もPerl5.6以降になってきてますし。
それにDBD::mysqlの古いバージョンではトランザクションがサポート
されていません。

> (2)実際に記述したコード
(中略)
> $sth2 = $db2->prepare("update bbs_db_tbl set comment=\"$comment\"
>  where cnt=35");
ウーン、どの資料に、こんな方法が書かれているのでしょう?
TimさんがDBIのドキュメントにuse strict;と明示的なAutoCommmitの
指定はstrongly recommendedと書いてから、もう何年も経つのに...。

あいまいな記憶ですが、以前のDBD::mysqlのバージョンでは
"(ダブルクォート)の部分の気にしていなかったように思います。
そのため"(ダブルクォート)の代わりにシングルクォートで囲んでみたら
うまくいくかもしれません。(他のDBMSでもよく使われている
クォートの方法なので)。ただそれも気休め程度でしょう。
だって$commentの中に"(ダブルクォート)や'(シングルクォート)が
入っていたら目も当てられませんからね。そんなときのために
quoteメソッドでクォートするという方法もあります。しかし、
プレースホルダを利用するほうが効率的でしょう。

[quoteのサンプル(一部)]
my $comment="?";
$comment = $db2->quote($comment);
my $sth2 = $db2->prepare(
    "update bbs_db_tbl set comment=$comment where cnt=35");
$sth2->execute();

[プレースホルダのサンプル]
use strict;
use DBI;
my $user = '****';
my $passwd = '*****';
my $db2 = DBI->connect('DBI:mysql:bbs_db:localhost', $user, $passwd,
  {AutoCommit=>1, RaiseError=>1}) or die "$!";
my $comment="?";
my $sth2 = $db2->prepare('update bbs_db_tbl set comment=? where cnt=?');
$sth2->execute($comment, 35);

$sth2 = $db2->prepare('select comment from bbs_db_tbl where cnt=?');
$sth2->execute(35);
my $disp_comment= $sth2->fetchrow_array;
print "$disp_comment";

===================================================
川合 孝典 (Hippo2000)
   DBI日本語メーリングリスト管理人、Kansai.pm所属
   kwitknr@xxxxxxxxxx GCD00051@xxxxxxxxxx
   http://member.nifty.ne.jp/hippo2000http://www.hippo2000.info/
perldocの日本語情報ならperldocjp:翻訳してみませんか?
  http://perldocjp.sourceforge.jp/
===================================================


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

      8165 2003-08-28 23:46 ["山内" <GEG03466@xxx] MYSQL UPDATEで「?」を書込と「 NULL 」に化ける
      8167 2003-08-29 09:10 ┣[きたぢま <kitajima@x]                                       
      8168 2003-08-29 09:32 ┣[Shinichi Maruyama <m]                                       
      8169 2003-08-29 10:27 ┣[SUGAWARA Hajime <sug]                                       
      8175 2003-08-30 06:17 ┃┗["KAWAI,Takanori" <GC]                                     
      8176 2003-08-30 11:16 ┃ ┣["山内" <GEG03466@xxx]                                   
->    8177 2003-08-30 21:58 ┃ ┃┗["KAWAI,Takanori" <GC]                                 
      8181 2003-09-01 12:19 ┃ ┗[SUGAWARA Hajime <sug]                                   
      8174 2003-08-30 00:59 ┗["山内" <GEG03466@xxx]