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

解決済みの質問

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

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

投稿日時 - 2007-09-22 15:54:52

連想キーワード:

QNo.3367008

すぐに回答ほしいです

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

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

モジュールが使えないのなら
このように置き換える。

投稿日時 - 2007-09-25 13:51:34

お礼

ありがとうございます。

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

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

投稿日時 - 2007-09-25 17:04:31

ANo.2

1人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(2件中 1~2件目)

ANo.3

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

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

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

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

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

投稿日時 - 2007-09-27 18:22:03

ANo.1

DBI::prepare()を使う。

投稿日時 - 2007-09-22 22:21:19

お礼

ありがとうございます。

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

ありがとうございます。

投稿日時 - 2007-09-25 17:01:51

あわせてチェックしたい
  • insert into test(data1,data2) values('$data1','$data2')の項目数に制限は? ...
  • implodeで('a','b','c')したい ...
  • INSERT INTOに関しまして。 ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら