Q120:MySQL書込み時、c:\のバックスラッシュが文字列格納変数に取り込みますと消えるのですが、正確に取り込む方法はあるのでしょうか?
Q120-1:
インサート文に変換する時消えてしまいます。
Insert into zyutyuu (tan_id,tantou,use_id,user,zyutyubi,noukibi,hinmei,suryou,tanka,kingaku,bikou,kanri_no,data) VALUES ('2','一文字隼人','1','ヨタヨタ自動車','2011/01/28','2011/01/27','bb','1','30','30','a','a01','C:demoaa.jpg')
C:\demo\aa.jpgがC:demoaa.jpgとなってしまいます。
A120-1:
お問い合わせの件、文字列格納変数にバックスラッシュを含む文字列を設定するだけでは消えないと認識しておりますが、
おそらく、メソッド「正規表現に適合する全ての文字列を置換する」等を用いて、文字列置換を行っているのではないかと想像してお答えしますと、メソッド「正規表現に...」を用いて文字列の置換を行っている場合、バックスラッシュが正規表現の文字列または特殊文字列と判断されます。
これには、バックスラッシュを二つ重ねる(例:C:\\demo\\aa.jpg)か、特に問題が無ければ、メソッド「指定文字列と一致する全ての文字列を置換する」等をご使用になると、お考えの動作になると存じます。
もし、上述の想像が間違っておりましたら、どのようなメソッドをご使用か教えて下さいますと助かります。
Q120-2:
ご指導ありがとうございました。お陰で、メソッド「指定文字列と一致する全ての文字列を置換する」でうまくいきますが、MySQLで「\」が書けません。前は書けていたのですが、不思議です。
A120-2:
「Q&A96」をご参照いただきたいのですが、
MySQLにおきましても、\は特殊文字として認識されますので、SQL文中も\を二つ重ねる必要がございます。
また、データベースの状況によりまして全角の「¥」になる場合もありますので注意が必要です。
「\」の代わりに「/」もお使いいただけますので、ご検討下さい。
ご連絡:
前は正常に書きこまれていませんでしたが、今回MySQLを入れ替えてみたら動いたみたいです。データベースアクセス_4(DB切替版)でも \ははねられます。「\」を「/」に強制的に変えることで解決致しました。とりあえず、この対応でいこうと思います。大変ありがとうございました。