PHPについて質問です。


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

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

登録されたデータをデータベースで見てみると¥マークが残りません。。。

D:画像AA1001.jpg

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

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

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

回答の条件
  • 1人2回まで
  • 登録:2009/08/08 03:58:17
  • 終了:2009/08/08 19:41:16

ベストアンサー

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/08/08 11:05:08

ポイント60pt

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

SQL文の部分だけ取り出しましたが、まず、クォーテーションの使い方が間違っています。シングルクォーテーションとダブルクォーテーションの数が合いません。

また円マーク(¥)が全角になっていますが、本当は半角(バックスラッシュ)のことですよね。

プログラムは動いているようですので、これは「はてな」に書き込むときの typo ととらえておきます。


以上のような前提であれば、以下のように書きます。(円マークはバックスラッシュで示されています)

バックスラッシュの数は、ダブルクォーテーションの中でエスケープするために各々2個にすることは定石です。

MySQLにSQL文を発行する前に、さらに加工が必要なのですが、これは mysql_escape_string 関数に任せています。

$str = "D:\\画像\\{$group}\\{$group}1\\{$number}.jpg";
$str = mysql_escape_string($str);
$sql = "update table set PICTURE1_LINK = '{$str}';";
$res = mysql_query($sql);
id:aiomock

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

無事に修正できました。ありがとうございます。

2009/08/08 19:40:06
  • id:taknt
    普通に出力するだけならば ¥が 二つでいいのですが、mysqlなどのDB側で ¥が 一つだと 削除されてしまうようなので
    ¥を 4つにして ¥¥で出力して mysqlで ¥と認識させないと ダメみたいですよ。
  • id:kn1967
    前の質問で id:tdoi さんが補足してくださってるので、
    新たに質問する必要ないですよ。

    http://q.hatena.ne.jp/1249662671#c155862
  • id:kmond2
    > kn1967 2009-08-08 06:41:14
    > 新たに質問する必要ないですよ。

    質問は質問者の自由のはずですが、貴兄は何の権利があってこうした発言をするのでしょう。
  • id:b-wind
    >バックスラッシュの数は、ダブルクォーテーションの中でエスケープするために各々2個にすることは定石です。
    全く保って異論は無いのだが、バックスラッシュの数はプロでも間違うことがあるので、
    シングルクオート+文字列連結でやる方法も合った方がいいんじゃないかな。
  • id:pahoo
    > b-windさん
    > シングルクオート+文字列連結でやる方法も合った方がいいんじゃないかな。

    ご指摘ありがとうございます。そういう考え方もありますね。
    この方法で書くとすると、回答の 1行目は以下のようになります。

    $str = 'D:\画像\' . $group . '\' . $group .'1\' . $number '.jpg';
  • id:aiomock
    ご回答ありがとうございます。

    とても勉強になります。

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

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

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

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