人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

データベースについて質問です。

現在テーブルのひとつの項目(LONGTEXT形式)にhtmlファイルを保存しています。

データ量がひとつあたり10KBと結構あり、文自体が結構長いです。

登録は出来たのですがこれをいざエクスポートしようとするとエクスポートの画面にhtmlの画面が出てきて、落としたエクセルにはアラビア語のようなバグが発生してしまいます。

またこの状態でデータベースの編集画面で編集ボタンを押すと空白ページへ切り替わって画面が見れなくなります。
データのアクセスが出来ない状況です。

PHP上でデータベースのパラメータを変えるとデータベースに入っているhtmlのデータの内容も同時に変わるという事をしたく、文章が長くてもそういった場所を整えてセルの中に文章を保存したいとは考えています。

一応登録する前は’や”の前に¥を全て置いてエスケープは施しました。

echo で出力してみたのですが、登録したデータに全く問題はなく、綺麗にHTMLが出力されます。

こういった長い文章のデータをデータベースで大量に保存していくのは危険でしょうか?

対処方法など分かる方おりましたらよろしくお願いします。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:echo HTML KB PHP ひとつ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● y-kawaz
●23ポイント

プログラムによるSQLの実行においてプレースホルダを使わないで自前エスケープすることほど愚かなことは無いと思う。

プレースホルダでググると幸せになれると思います。

◎質問者からの返答

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


2 ● b-wind
●100ポイント ベストアンサー

まずDBの種類によって対応が変わるのでそれを明示してください。

あとバージョンも正確に。


登録は出来たのですがこれをいざエクスポートしようとするとエクスポートの画面にhtmlの画面が出てきて、落としたエクセルにはアラビア語のようなバグが発生してしまいます。

どんな方法でエクスポートしようとしたのですか?単にエクスポートの仕方がまずかっただけの気がします。


一応登録する前は’や”の前に¥を全て置いてエスケープは施しました。

エスケープする文字はそれだけでは足りません。

PHP であればそれぞれのDBごとに専用(無ければ汎用のもの)のエスケープ処理関数があるのでそちらを使ってください。

素人処理は危険な部分です。

例)MySQL の場合 mysql_real_escape_string 関数を使用する。


echo で出力してみたのですが、登録したデータに全く問題はなく、綺麗にHTMLが出力されます

では一旦登録自体は出来ていると考えても差し支えないでしょう。


こういった長い文章のデータをデータベースで大量に保存していくのは危険でしょうか?

数MBクラスならともかく数KB程度で根をあげたり危険な現象が起こるようなDBは

現在比較的使われているものの中では存在しません。

もちろんデータ容量的に後々性能問題が起こることはありますがそれはまた別の話です。

うまいやり方かどうかは別として特に問題のあるやり方ではないです。


対処方法など分かる方おりましたらよろしくお願いします。

もう少し使用しているDB・管理ソフトなどを説明していただかないと説明のし様がありません。

◎質問者からの返答

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

バージョンですが

PHP/5.1.6

MySQL - 5.0.45

phpMyAdmin - 2.8.2.4

になります。

使用しているDBは使えるねっとのアドバンスコースです。

5GBまでデータ登録できるみたいです。


3 ● yofukaci
●22ポイント

>こういった長い文章のデータをデータベースで大量に保存していくのは危険でしょうか?

大丈夫です。WordPressとかでも普通にそうしてますよ。

◎質問者からの返答

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


4 ● organic19
●22ポイント

phpMyAdminを利用しているようなので、

インポート時のphpのメモリーサイズに気をつけたほうがいいかもしれませんね。

http://php.benscom.com/manual/ja/ini.core.php

あと、phpからDBにInsertする場合、プレースホルダーを利用するといいと思います。

エスケープすべき文字をチェックしてたら大変ですし、安全な処理をする方法がありますし。

phpならPDOの利用をお勧めします。

この辺りを参照してみてはいかがでしょうか。

http://php.benscom.com/manual/ja/pdo.prepared-statements.php

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ