PHPについて質問です。


PHPで以下の命令をしました。

mysql_query("UPDATE TABLE SET PICTURE1_LINK = 'D:\画像¥'".$group."¥'".$group."1¥'".$number.".jpg' ,);

登録されたデータをデータベースで見てみると¥マークのところが'(シングルクォーテーション)になっております。

D:画像'A'A1'001.jpg

これをきちんと¥マークで以下のように表示したいのですがどのようにすればよろしいでしょうか?

D:画像¥A¥A1¥001.jpg

分かる方おりましたらよろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2009/08/08 01:31:14
  • 終了:2009/08/08 02:38:46

ベストアンサー

id:tdoi No.1

tdoi回答回数174ベストアンサー獲得回数752009/08/08 02:24:35

ポイント100pt

こんな感じでしょうか。

mysql_query("UPDATE TABLE SET PICTURE1_LINK = 'D:¥¥画像¥¥{$group}¥¥{$group}1¥¥{$number}.jpg');

¥はエスケープ文字なので、¥¥にしないと¥という文字としては解釈されません。

もともとダブルクオートの文字の中なのであれば、{}で囲って変数を展開させた方が見やすいかと思います。

何かの参考になれば。

id:aiomock

ご回答ありがとうございます。

2009/08/08 02:38:22

その他の回答(1件)

id:tdoi No.1

tdoi回答回数174ベストアンサー獲得回数752009/08/08 02:24:35ここでベストアンサー

ポイント100pt

こんな感じでしょうか。

mysql_query("UPDATE TABLE SET PICTURE1_LINK = 'D:¥¥画像¥¥{$group}¥¥{$group}1¥¥{$number}.jpg');

¥はエスケープ文字なので、¥¥にしないと¥という文字としては解釈されません。

もともとダブルクオートの文字の中なのであれば、{}で囲って変数を展開させた方が見やすいかと思います。

何かの参考になれば。

id:aiomock

ご回答ありがとうございます。

2009/08/08 02:38:22
id:yofukaci No.2

yofukaci回答回数306ベストアンサー獲得回数102009/08/08 02:25:49

ポイント100pt

D:画像¥¥A¥¥A1¥¥001.jpg

このように¥¥してみたらうまくいくと思います。

id:aiomock

ご回答ありがとうございます。

2009/08/08 02:38:24
  • id:tdoi
    失礼。最後にダブルクォートが抜けてました。

    mysql_query("UPDATE TABLE SET PICTURE1_LINK = 'D:¥¥画像¥¥{$group}¥¥{$group}1¥¥{$number}.jpg'");

    また、念のためですが、表示のために全角で¥を記述していますが、ソース上は半角に直してくださいね。

  • id:aiomock
    すいません。

    実行してみたのですが

    mysql_query("UPDATE TABLE SET PICTURE1_LINK = 'D:¥¥画像¥¥{$group}¥¥{$group}1¥¥{$number}.jpg'");



    D:画像AA1001.jpg

    の表示になってしまいます。
  • id:tdoi
    たびたび失礼。
    PHPレベルのエスケープと、mysqlレベルのエスケープをかいくぐる必要がありました。

    mysql_query("UPDATE TABLE SET PICTURE1_LINK = 'D:¥¥¥¥画像¥¥¥¥{$group}¥¥¥¥{$group}1¥¥¥¥{$number}.jpg'");

    でどうでしょうか?

    もっと正しいのは、

    $query = "UPDATE TABLE SET PICTURE1_LINK = 'D:¥¥画像¥¥{$group}¥¥{$group}1¥¥{$number}.jpg'";
    $query = mysql_real_escape_string($query);
    mysql_query($query);

    とかかもです。

  • id:b-wind
    $query = mysql_real_escape_string($query);

    これだとクエリ本文もエスケープされるよ。
    mysql_real_escape_string でエスケープするのは「D:(後略)」という値の部分だけにしたほうが良い。
  • id:tdoi
    >b-windさん

    フォローありがとうございます。

    $path = "D:¥¥画像¥¥{$group}¥¥{$group}1¥¥{$number}.jpg";
    $path = mysql_real_escape_string($path);
    mysql_query("UPDATE TABLE SET PICTURE1_LINK = '{$path}'");

    こんなのが正しいですかね。
    単純と思って、確認しないでコメント書くとだめですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません