データベースにデータを挿入する際の改行コードについて

このQ&Aのポイント
  • データベースにデータを挿入する際、サーバのOSの改行コードに合わせてデータを挿入することが望ましいです。
  • 例えば、WindowsやMACからLinux上で動作するPHPプログラムを通じてデータベースへデータを挿入する処理を行う場合、改行コードを適切に変換してからデータベースに挿入する必要があります。
  • 改行コードの統一は、データの整合性を保つために重要な役割を果たします。
回答を見る
  • ベストアンサー

データベースにデータを挿入する場合の改行コードについて

お世話になっております。 データベースにデータを挿入する場合、サーバのOSの改行コードに改行コードを合わせてデータを挿入する方が良い、という事を聞きました。 これというのは、 例えば、WindowsやMACなどからHTMLフォームを通してLINUX上で動作するPHPプログラムで、データベースへデータを挿入する処理を書く場合"\r\n"や "\r" といった改行コードを"\n"に変換する処理を通してからデータベースに挿入した方が良いという事なのでしょうか? 要領を得ない質問で申し訳ありません。 本人に聞く事が出来れば良いのですが、それもかなわないので、お分かりの方がいらっしゃいましたらお返事いただけたら嬉しいです。

  • anbsd
  • お礼率85% (18/21)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

結局、様々なOSから入力された改行付き文字列をひとつのデータベースにINSERTする場合に、 後でまとめて出力する際、改行コードがまちまちになってしまって困るということはあると思います。 Windowsで、改行が\rのみだった場合、改行されません。 出力が簡単になる、CSVなどの形式でダンプしたときに都合がいいようにするには、改行コードを合わせたほうが良いと思います。 <?php $comment = $_POST['comment']; //入力された値があったとして $comment = str_replace(array("\r\n", "\r", "\n"), "\n", $comment); ?> こんな感じで。

anbsd
質問者

お礼

>出力が簡単になる、CSVなどの形式でダンプしたときに都合がいい INSERT時に処理しておけば、出力時に統一された改行コード\nなどで処理が可能という事なのですね。 納得できました。 ありがとうございました!

関連するQ&A

  • 改行コードについて

    HTMLフォームのテキストエリアで改行した場合の処理についてご質問します。 Windowsのローカル環境で試しています。 改行コードLFでPHPを作成しています。 ○改行コードの認識 LF(\n) Unix,Mac OS X CR(\r) Mac OS 9 CRLF(\r\n) ○テキストエリアからの入力値の処理 CRLF、CRをLFに変換しています。 $value= str_replace ("\r\n", "\n", $value); $value = str_replace ("\r", "\n", $value); このあとDBに値を格納しています。 ○出力の際の処理 DBから値を取得。 phpのprint関数で下記を出力。 <textarea >${value}</textarea> 上記処理で、ローカル、サーバともに正常に動作しています。 しかし改行コードがLF(\n)なのでCRLF(\r\n)のWindowsで表示したときには問題が起きそうな気がします(実際には正常に動作)。 なにかしっくりこなくて質問させていただきました。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 改行コードについて

    ファイルの文字コードはutf-8で改行コードはLFです。 メール送信時にメール文面の一部にいれるテキストを mysqlに保存しています。 メール送信のソース内でデータを読み込み送信までは できているのですが改行コードを変換したく $msg = str_replace("\r\n", "\n", $msg); とやってみましたが改行されず普通に\r\nと表示され うまく変換ができません。 いろいろと試した結果以下のソースでは正常に改行されました。 $msg = str_replace("\\r\\n", "\n", $msg); メール送信前にデバッグでしてみましたが読み込むデータの 改行部分は\r\nとなっているのは確認済みです。 \を多くつければ改行はできるようなのですがこれは仕様なの でしょうか? またmysqlに入れてあるデータはフォームから入力し登録 しているのですがLFの改行コードは\nなので登録時に\r\nではなく \nと変換してからmysqlに登録するのがいいものなのでしょうか?

    • 締切済み
    • PHP
  • 改行コードについて

    改行コードがよく解らないので説明お願いします 様々なサイトの改行コードの説明で LinuxはLF MacはCR WindowsはCRLFと説明しています 私の認識では LF=\n CR=\r CRLF=\r\n だと思っていました ここで疑問なのですが 確かに私の利用した環境ではLinuxの改行コードは\n, Windwosの改行コードは\r\nでした ところがMacの標準のメモ帳(テキストエディット)で文字を入力しても改行コードは\nです 確認方法は od -cというコマンドとfileというコマンドです これはつまりCRではなくLFということですよね? では、なぜ多くのサイトではMacはCRと説明しているのでしょうか? そもそもCR=\rという認識が間違ってるのでしょうか? よろしくお願いします

  • データベースにデータ挿入

    HTMLに記載したフォーム等のデータを、JavaScriptを使用してデータベース(mdbファイル)に挿入することは可能なのでしょうか? もしできるのであれば、方法などご教示ください。 よろしくお願いいたします。

  • 変数のデータに改行コードのみを削除したい

    変数のデータに改行コードのみを削除したい 変数のデータに改行コードのみを削除したいと思っておりますがうまくできません。 $samのデータに以下の内容でデータがはいってます。 (ここから) これはテストです。<br>\n <br>\n これはテストです。<br>\n <br>\n <br>\n これはテストです。<br>\n これはテストです。<br>\n (ここまで) $sam=~ s/<br>\n//g; だと本来改行コードがほしい内容まで削除してしまいます。 以下の内容もおかしいと思いますが、うまく出来ませんでした。 $sam=~ s/.*?<br>\n//g; この内容の場合改行コードが欲しい。それ以外は削除したい。 タグの除去は以下のサイトを検索で見つけたのですが、ちょっと違うかなと思い質問させていただきました。 HTMLタグを取り除く http://www.nishishi.com/perltips/string4.html 以上、よろしくご指導賜りたく思います。

    • ベストアンサー
    • Perl
  • せっかく入れた改行コードが消えてしまう

    質問:No.7994841は一旦、ベストアンサーにした方から頂いた回答のやり方で解決できたので質問を閉じて、改めてその質問に関係する新たな質問を立たせて頂きました。 改めて状況を書かせて頂きますと、 ショッピングサイトを運営・管理しています。 CGIを使ったネットショップ、及び管理サイトがあるのですが、管理サイトからデータを登録すると一旦phpMyadminのデータベース上にデータが登録されて、ネットショップのページにてその登録したデータが表示される仕組みになっています。 そして、前の質問では、 「そのネットショップで見れる所では改行等入れながら成形されたデータを表示したいのですが、管理サイトから改行を<br>で登録するとデータベースでは、&lt;br&gt;と登録されて、実際のネットショップでは<br>と改行コードそのまま表示されて改行されていません。 データベースを直接いじってデータ内に<br>と入れるとネットショップでも正しく改行がされているのですが、管理サイトを色んな人に使ってもらうことを考えるとデータベースを直接いじりたくないのです。」 という質問をさせて頂き、解決方法を頂いたので解決できました。 そして、改めて質問スレッドを立たせて頂いた新たな質問が2つあります。 (1)上記において頂いた回答は$line =~s /&lt;br&gt;/<br>/g;とprintを使う方法で、そのとき困っていたページではその書き方でテンプレートのhtmlを読み込んで行うやり方だったので解決できました。 もう一つcgiのソースファイル内で直接html文書を書いて表示させるページもあってそちらの場合だと$lineやprintを使わずに表示しているのですがこういったページの表示方法の場合はどのようにしたら上手く行くでしょうか? (2)前回の質問とはこちらも別のページのことなんですが、こちらの場合は一旦データ編集を行い「確認」ボタンがあって押すと入力したデータ一覧を確認できるページに転移してそのページにある「登録」ボタンを押すことでデータがデータベースに登録されます。 その、編集ページから確認ページに転移した際に改行コード<br>や改行【Enter】が消えてしまって確認ページには改行コード等がなくなってしまっています。 前回の質問のページとの違いですが、 前のページはhtml内でformがあり、そこにaction(自分のcgiにして再読み込み)もmethodも記載されて確認ページの処理が動くモード設定も同じform内で行っていました。 なので、確認ボタンが押されると同じcgiが再度呼ばれて確認ページの処理が行われます。 今回のは、form内にはactionもmethodもなく確認ボタンを押したタイミングでjavascriptが呼ばれてそのjavacriptで引き数を元にactionとmethodを設定して自分のcgiに対してsubmitしていました。 出来ればあまり大きな修正を加えずに対応したいのですが良い解決方法がありましたら教えて頂けますようよろしくお願いします。

    • ベストアンサー
    • CGI
  • textareでの改行

    ホームページ上のtextareaで入力してもらった情報を取得するCGI(perl)スクリプトを書いています。流れとしては,フォーム上で入力した情報をCGIで取得→確認画面を表示→問題無ければメールフォームとして送信,となっています。 このスクリプト上で問題となっているのが,textareaでは自動的に改行処理(wrap=softと同じ?xhtmlで書いているので,wrap属性は指定していません。)するときに入力される改行コードと,入力者が意図的に入力する改行コードを判別出来ないということです。自動的に挿入される\n(0x0A)を削除しようとスクリプト上で, $text =~s/\r\n/\n/g; $text =~s/\r/\n/g; $text =~s/\n//g; と入れたところ,全ての改行コードが変換処理されてしまい,入力者が意図的に入れた改行コードまで処理されてしまいます。 スクリプト上,もしくはxhtmlと組み合わせて,自動的に挿入される改行コードだけを消去して,意図的に入力した改行コードだけを残す処理は出来ないものでしょうか? phpなどを使うと出来るようですが,ある程度perlのcgiで作成してしまったので,このままで出来ればと思っています。よろしくお願いします。

  • 改行コード等について

    Winで普通のテキストエディタで改行やタブ等すると、実際には改行コード(\n\r等)を入力していると思います。そのコードを含めた文字列を全て表示して見てみたいのですが、どうすれば見られるでしょうか?

  • Perlでの改行コードについて

    <textarea>に入力された値をPOSTで渡し、ポスグレに書き込み、それをHTML上で表示する処理をしているのですが。 textareaで改行を入力した場合に、 DB内に改行が登録されません。 例: *textareaのwrapはsoftに設定してあります。 あいうえおかきくけこ さしすせそ と入力すると。 DBには 「あいうえおかきくけこ さしすせそ」 と登録され 表示では「あいうえおかきくけこさしすせそ」と表示されます。 ソースでみると 「あいうえおかきくけこ さしすせそ」と表示されています。 改行コードの置換がされていないのだと思い INSERT前に s/\r\n/<BR>/g; s/\r/<BR>/g; s/\n/<BR>/g; を使い置換をすると DBには何も登録されません。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 改行コードを保存できない。

    <textarea wrap="hard" name="sentence" rows="3" cols="30"></textarea> このフォームで、入力したデータは、 PostgreSQLのテーブルに保存されるように構成しました。 フィールドは、"text"型です。 いざそれを、phpでHTMLに呼び出すと、改行文字は無視されます。 実際に、データベースを開くと、その値はこのようになっていました。 "ああああ・・あああ・・・・ああ" 改行コードはどうやら、"・"2個を改行1つと扱って保存しているようでした。 phpで、・・を含む値をHTML呼び出す時、 ・・を<BR>として呼び出して、改行してしまう技はないでしょうか?

専門家に質問してみよう