アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

会員制サイトによくある、
各ユーザーの自己紹介文を保存したいのです。
500文字程度の文章になると思うのですが、
そういった長い文字列データはデータベースに保存してよいのでしょうか?
長い文字列はあまりデータベースには保存すべきでないでしょうか?
また、データベースに保存すべきでない場合は
どのように長い文字列を保存したら良いでしょうか?

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

A 回答 (4件)

保存していいですよ。


text型で保存すればいいと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
text型で保存します。

お礼日時:2014/11/19 14:49

DBに保存でいいと思いますよ。

    • good
    • 0

テキストというのは非常に軽い情報です。


かなり文量があっても数キロバイトレベルなのでDBに挿入しても負荷は
あまり高くなくおおむね問題ありません
とくにユーザーIDと紐づくのでDBに挿入すればデータ管理は楽にできます

これが例えば画像とかになると、メガ単位になるので、DBに投入しても
オーバーヘッドが大きくてあまりお勧めできないです

ちなみにDBの機能として「検索」や「集計」がありますが
数キロバイトの文字から特定の文字を含むレコードを抽出するのは
実はDBは得意ではありません。
機能的には「特定のカラム LIKE '%キーワード%'」などで
抽出できますが、特にTEXT型などにしてしまうと高速化につながる
インデックスが効かないケースが多いです。
つまりDBで管理しているからと言ってかならずしも効率的な検索ができる
というわけではないということを留意する必要があります。

その場合、特殊な処理をかけて全文検索という技法を使う場合もあります

この回答への補足

ご回答ありがとうございます!
なるほどです。
自己紹介文なのでDBに格納し、抽出するとしても、
検索条件はユーザーIDにし、
自己紹介文内の単語等であいまい検索をする予定はとりあえずないので、
今回の場合だと、自己紹介文を格納するカラムはTEXT型でも良いのではないかなぁ?とも思います。

また、自己紹介文をデータベースに格納する際はPDOのプレースホルダーを使用するので良いとして、抽出するときは一般的にデータを抽出する際に使用するhtmlspecialcharsでサニタイジングすれば良いのでしょうか?

ご返信頂けると有難いです。

補足日時:2014/11/18 17:31
    • good
    • 0

>htmlspecialcharsでサニタイジングすれば良いのでしょうか?



そうですね
場合によってはhtmlspecialchars()に加えて
trim()してあげたり、nl2br()で改行を<br>に変えてあげてもよいかと。
    • good
    • 1
この回答へのお礼

お返事頂きありがとうございます!
なるほど、trim()とnl2br()ですか・・・
自己紹介文の表示となると確かに知識が必要ですね!
諸々、非常に詳しくご回答頂き、ありがとうございました!

お礼日時:2014/11/19 14:53

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