Perl: 2009年12月アーカイブ

いやあ、Web 上の某情報を自動で取ってきて DB 化するという処理を、やっつけでパパッと Perl スクリプトで書いて実行してたら、

DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ...

なエラーが。

はい。シングルクォーテーションのエスケープ漏れです。(^^;
今回、ベタで SQL 書いて、直接 DBD/DBI で execute してるからねえ。ちゃんと手動でエスケープしないと。

INSERT 文にセットする前に、

$value =~ s/\'/\'\'/g;

とかね。(シングルクォーテーションを二重に)

そしたら今度は、別のスクリプトで、

sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file

なエラーが・・・とほほ。

シングルクォーテーションを含んだ文言を echo してプログラムに食わせる処理を Perl 内で実行してたんで、そこで引っかかってる。(^^;

ちゃんと、

$value =~ s/\'/\\\'/g;

しなくちゃいけませんなあ。(シングルクォーテーションの前に \ を)

ちゃんと作る時は、この辺の処理は自前の関数で処理するようにしてるんで、ちょっとテスト的にやっつけでチャチャっと作るとついつい忘れてしまいますなあ。

と、自責の意味で書いておく。

このアーカイブについて

このページには、2009年12月以降に書かれたブログ記事のうちPerlカテゴリに属しているものが含まれています。

前のアーカイブはPerl: 2009年10月です。

次のアーカイブはPerl: 2010年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら