PHPとMYSQLについて教えてください。データベース登録時に下記のようなデータを登録しようとするとエラーになってしまいます。phpmyAdmin等を使用して直接データーベースへ入力するとエラーは起きません。

考えられる原因を教えていただけたらと思います。

messegeの内容をデータベースへ入力しようとするとエラーになります。
$messege="<a href="http://www.test.co.jp" target="blank">http://www.test.co.jp</a>

回答の条件
  • 1人5回まで
  • 登録:2006/11/16 21:32:54
  • 終了:2006/11/17 10:25:08

ベストアンサー

id:Mook No.4

Mook回答回数1312ベストアンサー獲得回数3912006/11/17 00:37:20

ポイント200pt

センテンス中にダブルコーテーションが含まれているためです。

$messege="<a href=\"http://www.test.co.jp\" target=\"blank\">http://www.test.co.jp</a>"; 

とデータ中のダブルコーテーションの前に\(半角の¥マーク)を置くか

$messege='<a href="http://www.test.co.jp" target="blank">http://www.test.co.jp</a>'; 

のように、データの前後をシングルコーテーションでくくるようにすれば良いと思います。


文字列/PHP入門

id:purupuru820

回答ありがとうございます。ご指摘のようにダブルコーテーションの問題でした。非常に分かりやすい解説でした。

2006/11/17 10:23:42

その他の回答(4件)

id:negi_1126 No.2

ねぎ回答回数30ベストアンサー獲得回数22006/11/16 22:48:22

ポイント50pt

これはMySQLの問題ではなくPHPでの記述方法の問題だけだと思います。

今回は、""(ダブルクォーテーション)がきちんと指定されていないのが原因と思われます。

変数に保存する際に、html文は下記のように単純に''(ダブルクォーテーション)で囲むようにすると間違いが少なくなりデバッグもしやすくなると思いますよ。

$messege="<a href='http://www.test.co.jp' target='blank'>http://www.test.co.jp</a>"

最近全然PHPに触れてないからエスケープ記号が\であったか自信はないのですが、html文中にどうしても""(ダブルクォーテーション)を使用したい場合は""をエスケープして

$messege="<a href=\"http://www.test.co.jp\" target=\"blank\">http://www.test.co.jp</a>"

のように記述すればOKだと思います。

ご存知だとは思いますが、""(ダブルクォーテーション)で囲んだ中での変数($hoge等)は展開しされてしまうので、そちらもお気を付けください。

id:purupuru820

回答ありがとうございます。エスケープ処理で上手くいきました。

2006/11/17 10:21:39
id:tobeoscontinue No.3

tobeoscontinue回答回数214ベストアンサー獲得回数542006/11/16 22:55:21

ポイント50pt

PHPの文字列では'か"で両端を囲まなくてはなりません。

文字列の中に"が含まれていた場合、それが文字列の一部なのか括りの一部なのか判断に困ります。

$messege="<a href="http://www.test.co.jp" target="blank">http://www.test.co.jp</a> 

の場合

$messege='<a href="http://www.test.co.jp" target="blank">http://www.test.co.jp</a>';

のように'で括るのが面倒がなくていいと思います。

id:purupuru820

回答ありがとうございます。質問文では最後の"が抜けていたようです。エスケープ処理にて動作しました。

2006/11/17 10:22:47
id:Mook No.4

Mook回答回数1312ベストアンサー獲得回数3912006/11/17 00:37:20ここでベストアンサー

ポイント200pt

センテンス中にダブルコーテーションが含まれているためです。

$messege="<a href=\"http://www.test.co.jp\" target=\"blank\">http://www.test.co.jp</a>"; 

とデータ中のダブルコーテーションの前に\(半角の¥マーク)を置くか

$messege='<a href="http://www.test.co.jp" target="blank">http://www.test.co.jp</a>'; 

のように、データの前後をシングルコーテーションでくくるようにすれば良いと思います。


文字列/PHP入門

id:purupuru820

回答ありがとうございます。ご指摘のようにダブルコーテーションの問題でした。非常に分かりやすい解説でした。

2006/11/17 10:23:42
id:tsuntsuku No.5

tsuntsuku回答回数18ベストアンサー獲得回数12006/11/17 02:05:35

ポイント50pt

ついこの間、同じ症状に悩まされました。私はスクリプト等には詳しくないのでなぜおかしくなったかはわかりませんが、hrefやtargetのダブルクォーテーションをとったら正常に稼動しました。

href="http://www.test.co.jp"

target="blank"

の部分を

href=http://www.test.co.jp

target=blank

id:purupuru820

回答ありがとうございます。エスケープ処理で上手くいきました。

2006/11/17 10:23:49

コメントはまだありません

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

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

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

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