-1

保存してきたすべてのデータに改行がないことがわかりました。

こことグーグルで解決策を探してみましたが、今のところうまくいきません。nl2br()は \n を交換できることがわかりました<br/>が、データベースからデータを取り出して出力するとうまくいきません。

現在、テキスト領域のテキストは保存され、次のように出力されます。

USB ポートを使用すると、ユーザーは JesterTLXtra に記録されたショーをバックアップできます。また、USB キーボードを接続して、名前と番号をすばやく入力できます。

私は preg_replace もあまり得意ではないので、そこも台無しにしました。

改行と改行を使用して mysql にデータを保存する方法は?

私が衛生管理のために使用している preg_replace() :

$pattern = "/[^a-zA-Z0-9-.@]/";

メインテキストエリア:

                                <LABEL CLASS="NORMAL_LABEL" FOR="P_DESC_EN">DESCRIPTION-EN</LABEL>
                            <TEXTAREA ID="P_DESC_EN" NAME="P_DESC_EN" COL="15" ROWS="10"></TEXTAREA>

挿入ファイル:

    <?php
    $long_desc_en = ($_POST['P_DESC_EN']);
    $pattern = "/[^a-zA-Z0-9-.@]/";
        $clean_long_desc_en = preg_replace($pattern, " ", $long_desc_en);
        $result = mysql_query("INSERT INTO main_table 
        (alpha_p_long_desc_en) VALUES 
        ('$clean_long_desc_en')"); 
        if(!$result)
        {
        echo "Error! ".mysql_error();
        }
?>

それは基本的にそれです

4

1 に答える 1

1

いくつかのエラー。

  1. preg replace は、その範囲にないものはすべて削除すると言っています。改行文字を含む。
  2. MySQL へのデータ ポンピングを回避していません。できれば PDO または mysqli 関数を使用しますが、最低限 mysql_real_escape_string() を使用して変数をエスケープします。

.

<?php 

$long_desc_en = ($_POST['P_DESC_EN']); 
$pattern = "/[^a-zA-Z0-9-.@\n]/"; 
$clean_long_desc_en = mysql_real_escape_string(preg_replace($pattern, " ", $long_desc_en)); 
$result = mysql_query("INSERT INTO main_table (alpha_p_long_desc_en)
                         VALUES ('$clean_long_desc_en')");  
if(!$result) {
    echo "Error! ".mysql_error(); 
} 

?> 

(ただし、PDO を確認してください。大まかな例を以下に示します。エラー処理を追加するだけです。

$clean_long_desc_en = preg_replace($pattern, " ", $long_desc_en); 
$sth = $dbh->prepare("INSERT INTO main_table (alpha_p_long_desc_en)
                         VALUES (:clean_long_desc_en)");  
$sth->bindParam(':clean_long_desc_en', $clean_long_desc_en);
$sth->execute();
于 2012-09-07T05:44:55.990 に答える