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/hippo2000、http://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]