将文本从textarea插入MySQL数据库而不会丢失格式

Dea*_*rry 5 php mysql

我正在尝试将我站点上的textarea中的文本添加到MySQL数据库中.

下面是将文本添加到数据库的PHP代码.

if (isset($_POST['text']))
{
    $text = sanitizeString($_POST['text']);
    $text = preg_replace('/\s\s+/', ' ', $text);

    $query = "SELECT * FROM profiles WHERE user='$user'";
    if (mysql_num_rows(queryMysql($query)))
    {
        queryMysql("UPDATE profiles SET text='$text' where user='$user'");
    }
    else
    {
        $query = "INSERT INTO profiles VALUES('$user', '$text')";
        queryMysql($query);
    }

}
else
{
    $query  = "SELECT * FROM profiles WHERE user='$user'";
    $result = queryMysql($query);

    if (mysql_num_rows($result))
    {
        $row  = mysql_fetch_row($result);
        $text = stripslashes($row[1]);
    }
    else $text = "";
}

$text = stripslashes(preg_replace('/\s\s+/', ' ', $text));
Run Code Online (Sandbox Code Playgroud)

以下是表单的代码.

<textarea name='text' cols='40' rows='3'>$text</textarea><br /> 
Run Code Online (Sandbox Code Playgroud)

但是当输入数据时,它会在数据库中显示正确但未显示正确显示的数据.见下图:

输入的文本

输入的文本

文本在页面上的显示方式

这是文本的显示方式

文本在数据库中的方式

这是数据库中的文本

这是在代码页上显示文本的PHP代码.

$result = queryMysql("SELECT * FROM profiles WHERE user='$user'");

    if (mysql_num_rows($result))
    {
        $row = mysql_fetch_row($result);
        echo stripslashes($row[1]) . "<br clear=left /><br />
Run Code Online (Sandbox Code Playgroud)

希望你能帮忙!

编辑:添加额外的PHP代码

Dav*_*mas 9

您的文本,除非您使用的是富文本编辑器,例如Mark-down(如Stackoverflow),它由您的CSS设置样式,而不是由其textarea自身的内容设置.

如果问题是保留新行,那么您可以nl2br($text)在存储或从数据库检索之前通过该函数运行该字符串.

我建议检索会更好,但这只是我的意见(我不能提供任何证据来支持它).