- ベストアンサー
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できる様にするにはどのようにしたらよろしいのでしょうか? どのたかよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
$val =~ s/"/"/g; $val =~ s/'/'/g; モジュールが使えないのなら このように置き換える。
その他の回答 (2)
- g_p_
- ベストアンサー率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使ってないんですか?
- sakusaker7
- ベストアンサー率62% (800/1280)
DBI::prepare()を使う。
お礼
ありがとうございます。 prepareを使うのですね。 でもこれはDBIモジュールということになりますので、使えるかどうか・・・。 試しにやってみます。 ありがとうございます。
お礼
ありがとうございます。 簡単に考えれて置き換えてやればいいんですよね? とても簡単な事を忘れてました・・・。 ありがとうございました。