• ベストアンサー

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

こんにちは。 現在、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できる様にするにはどのようにしたらよろしいのでしょうか? どのたかよろしくお願いします。

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

  • ベストアンサー
  • yuroto
  • ベストアンサー率100% (1/1)
回答No.2

$val =~ s/"/"/g; $val =~ s/'/'/g; モジュールが使えないのなら このように置き換える。

hana43
質問者

お礼

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

その他の回答 (2)

  • g_p_
  • ベストアンサー率53% (28/52)
回答No.3

sakusaker7 さんが書かれているのは多分、 do メソッドは使わずに、 prepare メソッドでプレースホルダを使ったステートメントハンドルを取得して、 それに execute メソッドで値をのせてやれば、クオート考えなくてもいいよって事だと思いますよ。 my $sth = $dbh->prepare("INSERT INTO your_table( foo, bar , baz ) VALUES(?,?,?)"); $sth->execute( $foo , $bar , $baz ); >でもこれはDBIモジュールということになりますので、使えるかどうか・・・。 DBI使ってないんですか?

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

DBI::prepare()を使う。

hana43
質問者

お礼

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

関連するQ&A