• ベストアンサー
  • すぐに回答を!

mysqlデータベースにinsertできない

  • 質問No.3367008
  • 閲覧数693
  • ありがとう数4
  • 回答数3

お礼率 49% (105/212)

こんにちは。

現在、perlでmysqlにデータをinsertしているのですが、ある記号があった場合、挿入することが出来ません。

以下のようにしたところ、もし$titleや$komentoに「'」があった場合、insert文のシングルクオートと引っかかってるみたいです。
$dbh->do(qq|insert into suredo values ('$no','$title','$koment')|);
そこで、今度は
$dbh->do(qq|insert into suredo values ("$no","$title","$koment")|);
とした場合、今度は「"」があった場合ダメみたいです。

このような場合、「’」や「”」があってもinsertできる様にするにはどのようにしたらよろしいのでしょうか?

どのたかよろしくお願いします。

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 100% (1/1)

$val =~ s/"/"/g;
$val =~ s/'/'/g;

モジュールが使えないのなら
このように置き換える。
お礼コメント
hana43

お礼率 49% (105/212)

ありがとうございます。

簡単に考えれて置き換えてやればいいんですよね?
とても簡単な事を忘れてました・・・。

ありがとうございました。
投稿日時:2007/09/25 17:04

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 53% (28/52)

sakusaker7 さんが書かれているのは多分、

do メソッドは使わずに、
prepare メソッドでプレースホルダを使ったステートメントハンドルを取得して、
それに execute メソッドで値をのせてやれば、クオート考えなくてもいいよって事だと思いますよ。

my $sth = $dbh->prepare("INSERT INTO your_table( foo, bar , baz ) VALUES(?,?,?)");

$sth->execute( $foo , $bar , $baz );

>でもこれはDBIモジュールということになりますので、使えるかどうか・・・。
DBI使ってないんですか?
  • 回答No.1

ベストアンサー率 62% (800/1280)

DBI::prepare()を使う。
お礼コメント
hana43

お礼率 49% (105/212)

ありがとうございます。

prepareを使うのですね。
でもこれはDBIモジュールということになりますので、使えるかどうか・・・。
試しにやってみます。

ありがとうございます。
投稿日時:2007/09/25 17:01
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ