重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

phpで会員制サイトの制作を勉強しています。
データベースへはPDOで接続しています。
MySQLデータベースを使用しています。

自己紹介文のような長めの文章をデータベースのTEXT型カラムにUPDATEで保存したいです。
$stmt = $db->prepare("UPDATE member SET text=:text WHERE id=:id");
$stmt -> bindParam(':text ',$text,PDO::PARAM_STR);
$stmt -> bindParam(':id',$id,PDO::PARAM_INT);
$stmt -> execute();

というSQL文を作成し、
文字列データを保存することはできたのですが、
「"」や「'」のような記号を含めるとそれ以降の文章が消えた状態で保存されてしまいます。
例えば顔文字などで「"」や「'」のような記号を使用する場合もあると思うので、
できれば、データベースに保存したいです。

どうしたら安全に「"」や「'」が保存できるでしょうか?

ご回答、よろしくお願いします。

A 回答 (3件)

PDOできちんとやる限りクォーテーションが影響することはありません。


直接関係ないかもしれませんが1点気になったのは

>$stmt -> bindParam(':text ',$text,PDO::PARAM_STR);

の「:text」の後ろの空白です、もしいらなければとってください

そのうえで
print $text;
で本当に$textに正しい値がはいっているか確認してみてください
$textへの代入方法が間違っていて投入されていない可能性が高い気がします
    • good
    • 0
この回答へのお礼

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

よく見てみたら直前のHTMLのタグに不備がありました・・・。
SQL関連のトラブルかと思い、パニクって完全に見落としていました。
空白の件、ご指摘頂きありがとうございます。
誤作動が起こらないように他のSQL文もチェックしてみます。

お礼日時:2014/12/03 14:38

どうやって文章の一部が消えていることを確認されたのでしょうか。



・mysqlコマンドやMySQL Workbench等,既存のツールを使って確かめた
データの入力に間違いがある可能性が高いです。
$textをlogに出力するなどして,正しくデータが入っているかを確認してみるのがよいかと思います。

・自作のコードで確かめた
まずは,mysqlコマンド等の既存のツールを使ってデータベースの中身を直接確かめる必要があります。
その上で,正しく入っているのであれば,出力時に問題がないか確認するのがよいかと思います。

この回答への補足

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

phpmyadminから保存先のデータカラムを確かめたところ、
「"」以降の文字列がなくなっていました。
selectで取得して画面上にprintしてみてもやはり「"」以降が無くなっていました。

補足日時:2014/11/26 17:10
    • good
    • 0
この回答へのお礼

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

よく見てみたら直前のHTMLのタグに不備がありました・・・。
SQL関連のトラブルかと思い、パニクって完全に見落としていました。

お礼日時:2014/12/03 14:38

"は"""


'は"'"
意味わかるかな?
    • good
    • 0
この回答へのお礼

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

よく見てみたら直前のHTMLのタグに不備がありました・・・。
SQL関連のトラブルかと思い、パニクって完全に見落としていました。
ご指摘ありがとうございました。

お礼日時:2014/12/03 14:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!