• ベストアンサー

データベースに"や'を保存できない

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文を作成し、 文字列データを保存することはできたのですが、 「"」や「'」のような記号を含めるとそれ以降の文章が消えた状態で保存されてしまいます。 例えば顔文字などで「"」や「'」のような記号を使用する場合もあると思うので、 できれば、データベースに保存したいです。 どうしたら安全に「"」や「'」が保存できるでしょうか? ご回答、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

PDOできちんとやる限りクォーテーションが影響することはありません。 直接関係ないかもしれませんが1点気になったのは >$stmt -> bindParam(':text ',$text,PDO::PARAM_STR); の「:text」の後ろの空白です、もしいらなければとってください そのうえで print $text; で本当に$textに正しい値がはいっているか確認してみてください $textへの代入方法が間違っていて投入されていない可能性が高い気がします

mmm5orz
質問者

お礼

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

その他の回答 (2)

回答No.2

どうやって文章の一部が消えていることを確認されたのでしょうか。 ・mysqlコマンドやMySQL Workbench等,既存のツールを使って確かめた データの入力に間違いがある可能性が高いです。 $textをlogに出力するなどして,正しくデータが入っているかを確認してみるのがよいかと思います。 ・自作のコードで確かめた まずは,mysqlコマンド等の既存のツールを使ってデータベースの中身を直接確かめる必要があります。 その上で,正しく入っているのであれば,出力時に問題がないか確認するのがよいかと思います。

mmm5orz
質問者

お礼

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

mmm5orz
質問者

補足

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

  • usami33
  • ベストアンサー率36% (808/2210)
回答No.1

"は""" 'は"'" 意味わかるかな?

mmm5orz
質問者

お礼

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

関連するQ&A