如何使用pdo绑定参数方法将多行文本插入mysql?

hzbexzde  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(368)

我需要在blob类型的列中插入一个多行文本数据。
我的table是:

CREATE TABLE `messages` (
  `id` int(11) NOT NULL,
  `msg` longblob NOT NULL
);

另外,我将此文本发布到“msg”列:

"This
is
Multiline
Text"

插入部分为;

$mydata->mesaj = "This
is
Multiline
Text";
$sql =  "insert into messages(msg) values (:mesaj)";   
$stmt = $this->dbConnection->prepare($sql);     
$stmt->bindParam(':mesaj', $mydata->mesaj, PDO::PARAM_STR); /* Is it true for use PARAM_STR for longBlob type? */
try {
      $stmt->execute();
} catch (PDOException $e) {
//..blah error blah
}

它确实插入不带换行符的文本。当我试图打开blob记录时,它显示:
这是多行文本
我尝试将\n替换为\n。不幸的是,这也是一次失败的尝试。我需要一个主意。我需要保存多行文字。谢谢你,丹尼斯

yqhsw0fo

yqhsw0fo1#

我认为问题在于你用什么来显示文本。在我的带有php7和mysql5.6的服务器上,我创建了您的表,然后运行以下代码(基本上与您的代码相同,但对变量名做了一些小的更改):

echo "<pre>";
$mesaj = "This
is
Multiline
Text";
$sql =  "insert into messages(msg) values (:mesaj)";   
$stmt = $link->prepare($sql);     
$stmt->bindParam(':mesaj', $mesaj, PDO::PARAM_STR); /* Is it true for use PARAM_STR for longBlob type? */
try {
      $stmt->execute();
} catch (PDOException $e) {
//..blah error blah
}
$result = $link->query('SELECT msg FROM messages WHERE id = 1');
if ($result) $row = $result->fetch();
echo $row['msg'] . "\n";
echo addcslashes($row['msg'], "\r\n");

我得到的结果是(如预期的那样):

This
is
Multiline
Text
This\r\nis\r\nMultiline\r\nText

相关问题