アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。

現在、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できる様にするにはどのようにしたらよろしいのでしょうか?

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

A 回答 (3件)

DBI::prepare()を使う。

    • good
    • 0
この回答へのお礼

ありがとうございます。

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

ありがとうございます。

お礼日時:2007/09/25 17:01

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


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

モジュールが使えないのなら
このように置き換える。
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

ありがとうございました。

お礼日時:2007/09/25 17:04

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



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

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

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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!