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

mysql:8176

From: "山内" <"山内" <GEG03466@xxxxxxxxxx>>
Date: Sat, 30 Aug 2003 11:16:01 +0900
Subject: [mysql 08176] Re: MYSQL UPDATEで「?」を書込と「 NULL 」に化ける

川合様


質問内容で明確でなかった部分補足します。

(1)プロダクト   VL
   ・PERL        5.005_03
      ・DBI         1.14
      ・DBD::mysql  2.0400

(2)実際に記述したコード

use DBI;
$user = '****';
$passwd = '*****';
$db2 = DBI->connect('DBI:mysql:bbs_db:localhost', $user, $passwd);

$comment="?";

$sth2 = $db2->prepare("update bbs_db_tbl set comment=\"$comment\" where
cnt=35");
$sth2->execute;

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

(3)db書き込み内容確認
  上記print文での表示が 'NULL'であることを確認。
  また、dos窓から下記で確認。

    mysql> select  comment from bbs_db_tbl where cnt=35;
    +---------+
    | comment |
    +---------+
    | NULL    |
    +---------+

(4)ちなみに上記スクリプトで
  $comment="私は?mysqlの仕様が?理解不足?";
   と変えると結果は
    '私はNULLmysqlの仕様がNULL理解不足NULL'
 となります。




----- Original Message ----- 
From: "KAWAI,Takanori" <GCD00051@xxxxxxxxxx>
To: <ml@xxxxxxxxxx>
Sent: Saturday, August 30, 2003 6:17 AM
Subject: [mysql 08175] Re: MYSQL UPDATEで「?」を書込と「 NULL」
に化ける


> 川合孝典です。
>
> ----- Original Message ----- 
> From: "SUGAWARA Hajime" <sugawara@xxxxxxxxxx>
> To: <ml@xxxxxxxxxx>
> Sent: Friday, August 29, 2003 10:27 AM
> Subject: [mysql 08169] Re: MYSQL UPDATEで「?」を書込と「
 NULL」
> に化ける
>
>
> >  菅原です。
> >
> > "山内" <GEG03466@xxxxxxxxxx>さんは書きました:
> > > ■環境 mysql v1.4 for win2000,win/xp、PERL 5.0
> > > ■現象
> > >   (1)PERLアプリからdb項目 commentを下記sqlでアップデート
> > >       update bbs_db_tbl set comment = "?" where cnt=35;
> > >            (半角の?です)
> >
> >  どういうコードでUPDATEしているのか書いていただかないと原因が分かりませ
> > ん。
> というのとDBI、DBD::mysqlのバージョンもわからないと。
> #Perlのバージョンもね
> perl -v
> perl -MDBI -e"print $DBI::VERSION"
> perl -MDBD::mysql -e"print $DBD::mysql::VERSION"
> とすればわかるはず。
>
>
> >  Perl+DBIを使っていて、
> >
> >  my $sth = $dbh->prepare( q{
> >      UPDATE bbs_db_tbl SET comment="?" WHERE cnt=35
> >  });
> >  $sth->execute();
> >
> > のように書いているのであれば、「?」はプレースホルダとして扱われます。
> そんなことはありません。"(ダブルクォート)で囲まれていますから、
> 文字列と判定するべきでしょう。DBD::mysqlならそうでないと困ります。
> もちろん
>  UPDATE bbs_db_tbl SET comment=? WHERE cnt=35
> のようにクォートされていなければ、プレースホルダになります。
>
> ちなみに私の環境
> -WinXP HomeEdition
> -ActivePerl Build633 + DBI : 1.28 + DBD::mysql : 2.1024
> -MySQL 3.23.52-max-nt
> では、何も問題ありませんでした。
> 実際のコードはどうなっているのでしょうか?
>
> [確認したスクリプト]
> use strict;
> use DBI;
> my $hDb = DBI->connect('dbi:mysql:test', '', '',
>   {RaiseError=>1, AutoCommit=>1});
>
> #1. DROP TABLE
> eval {$hDb->do('DROP TABLE bbs_db_tbl');};
> #2. CREATE TABLE
> # 2.1 CREATE TABLE
> $hDb->do(q{
>      CREATE TABLE bbs_db_tbl (
>         cnt integer,
>         comment varchar(80)
>      )
>     }
> );
> my $hSt = $hDb->prepare(
>   'INSERT INTO bbs_db_tbl VALUES(?, ?)');
> $hSt->execute(34, 'ABC1');
> $hSt->execute(35, 'ABC2');
> $hSt->execute(36, 'ABC3');
> $hSt->execute(37, 'ABC3');
> $hDb->do(
>     'update bbs_db_tbl set comment = "?" where cnt=35');
> my $hStU = $hDb->prepare(
>     'update bbs_db_tbl set comment = "?" where cnt=36');
> $hStU->execute();
> # NULLになる
> $hStU = $hDb->prepare(
>     'update bbs_db_tbl set comment = ? where cnt=37');
> $hStU->execute();
>
> [mysqlによる表示]
> mysql> select * from bbs_db_tbl;
> +------+---------+
> | cnt  | comment |
> +------+---------+
> |   34 | ABC1    |
> |   35 | ?       |
> |   36 | ?       |
> |   37 | NULL    |
> +------+---------+
> 4 rows in set (0.00 sec)
>
> ===================================================
> 川合 孝典 (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]