在数据库中存储文本区域的换行符:PHP MySQL

7
我有一个输入文本区域,我想将用户在文本区域中输入的换行符存储到数据库中,以便输出文本与输入文本相同。例如:
Some text some text some text some text


new line some text some text new line 

new line some text new line some text

这是我的当前上传脚本:
$sql = "insert into people (price, contact, category, username, fname, lname, expire, filename) values (:price, :contact, :category, :user_id, :fname, :lname, now() + INTERVAL 1 MONTH, :imagename)";
$q = $conn->prepare($sql) or die("failed!");
$q->bindParam(':price', $price, PDO::PARAM_STR);
$q->bindParam(':contact', $contact, PDO::PARAM_STR);
$q->bindParam(':category', $category, PDO::PARAM_STR);
$q->bindParam(':user_id', $user_id, PDO::PARAM_STR);
$q->bindParam(':fname', $fname, PDO::PARAM_STR);
$q->bindParam(':lname', $lname, PDO::PARAM_STR);
$q->bindParam(':imagename', $imagename, PDO::PARAM_STR);
$q->execute();

根据Micah的评论,尝试在输出中添加nl2br,即nl2br($imagename); - turbonerd
谢谢您的回复。如果我想保留lname输出的换行符,我该如何做以及在哪里放置? - neeko
4个回答

34

谢谢您的回复,我不确定在哪里放置nl2br(),我想保留的是“lname”文本中的换行符。 - neeko
2
这将在 PHP 中显示输出。也就是说,换行符存储在数据库中,但在显示为 HTML 之前,需要解析该数据的显示。 echo nl2br($data); - Micah Carrick
谢谢,我已经尝试过了,但它字面上说nl2br(一些文本); 当我回显时。 - neeko
1
回显 "<div id='expanderContent' style='display:none'><div class='reasonbar'><div class='prod-title1'>". nl2br($lname); ."</div><div class='reason1' style='width: 29%;'>联系人:<br /> ". $row['contact'] . "</div></div>"; - Micah Carrick
1
抱歉,请删除 nl2br($lname) 后面的分号。 - Micah Carrick
显示剩余2条评论

2

1

你也可以使用JavaScript通过replace方法将文本中的\n替换为<br>来实现换行。

str.replace("\n", "<br />","g");

7
最好避免使用JS解决方案,这样禁用/无法使用JS的用户仍然可以正确呈现字符串。 - Kevin

0

我之前遇到过同样的问题,现在这个已经解决了:

$query = "UPDATE your_table 
         SET your_text_field = 'line 1'" . '\n' . "'line2' 
         WHERE your_id_field = " . $id . "';";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接