-1

我刚刚发现我一直保存的所有数据都没有任何新行。

我尝试在这里和谷歌上搜索解决方案,但到目前为止还没有运气。我发现nl2br()可以交换 \n ,<br/>但是当我从数据库中取出数据并输出时它对我不起作用。

现在来自文本区域的文本被保存并输出如下:

eofuse 始终使用监视器。AUSB 端口允许用户备份已在 JesterTLXtra 上录制的节目。也可以连接 AUSB 键盘以快速输入名称和数字。节目文件与 JesterML 桌面兼容。ADMX 端口允许将 JesterTLXtra 用作备份控制台...

我对 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 回答