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


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

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

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

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

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

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

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

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

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/08/13 00:00:12
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント100pt

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

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


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

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


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

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

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

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

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


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

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


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

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

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

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

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


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

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

id:aiomock

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

バージョンですが

PHP/5.1.6

MySQL - 5.0.45

phpMyAdmin - 2.8.2.4

になります。

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

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

2009/08/09 12:43:04

その他の回答3件)

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226

ポイント23pt

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

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

id:aiomock

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

2009/08/09 12:29:05
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440ここでベストアンサー

ポイント100pt

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

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


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

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


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

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

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

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

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


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

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


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

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

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

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

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


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

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

id:aiomock

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

バージョンですが

PHP/5.1.6

MySQL - 5.0.45

phpMyAdmin - 2.8.2.4

になります。

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

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

2009/08/09 12:43:04
id:yofukaci No.3

回答回数306ベストアンサー獲得回数10

ポイント22pt

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

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

id:aiomock

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

2009/08/12 23:44:54
id:organic19 No.4

回答回数6ベストアンサー獲得回数1

ポイント22pt

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

id:aiomock

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

2009/08/12 23:45:00
  • id:b-wind
    >どんな方法でエクスポートしようとしたのですか?
    この質問に答えてください。
    あと、「落としたエクセル」という言葉の意味が分かりません。
  • id:aiomock
    エクスポートの仕方ですが、PHPMyAdminの画面へ入って、データの表示からデータのチェックボタンをチェックし選択したファイルをエクスポートすると、この時点で表示されるHTMLがおかしいです。
    落としたエクセルですが
    普通にエクスポートタブをクリックして、エクセル形式でエクスポートした場合の状態で、これも文字化けの状態で出力されます。

    説明不足で申し訳ありません。
  • id:b-wind
    >データの表示からデータのチェックボタンをチェックし選択したファイルをエクスポートすると、この時点で表示されるHTMLがおかしいです。
    圧縮形式でダウンロードしたら?
    HTML が表示される時点で通常の動作とは異なる。
    データ自体が HTML を含むためブラウザが SQL のダンプデータでなく、HTML ページだと誤認しているのでは?

    >普通にエクスポートタブをクリックして、エクセル形式でエクスポートした場合
    そもそも元の文字コードは何?
    内容の依存が激しいからエクセル形式でのエクスポート自体使わない方がいいと思うけど。
  • id:aiomock
    b-wind さん

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

    今私が使用しているDBの使えるねっとでは一度SQLでエクスポートした後、そのデータをテキストエディタに貼り付けて、UTF-8形式のCSV等に変更してから使わないといけなく、問題はそこにありました。まだ、エクスポートする時点で文字化けを起こしてデータが出力されたり、エディタで変更したデータが不規則に並ぶなど問題がありますが、どうにかしたいと思います。。

    他のサーバーの会社をいくつか調べてみたのですが、同じ手順でエクスポートをしてHTMLが表示されずにエクスポートできるものがありました。

    現在のDBの環境を今一度考え直してみようと思っています。

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

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

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

回答リクエストを送信したユーザーはいません