php - 如何使用 PDO 绑定参数方法将多行文本插入 mysql?
问题描述
我需要在 Blob 类型列中插入多行文本数据。
我的桌子是:
CREATE TABLE `messages` (
`id` int(11) NOT NULL,
`msg` longblob NOT NULL
);
此外,我发布此文本以保存到“味精”列:
"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。不幸的是,这也是另一个不成功的尝试。需要一个想法。我需要用多行文本保存。谢谢你,丹尼兹
解决方案
我认为问题在于您用来显示文本的内容。在我使用 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
推荐阅读
- mysql - 使用 MySQL 从 IMDB 数据库查询
- c++ - 如何打印 std::vector<>::size_type?
- r-markdown - 具有不同 Rmarkdown 输出的 R Blogdown
- visual-c++ - 在应用程序中检查 AVX 处理器的支持。与它相关联
- java - 尝试心跳失败:具有单个休息代理实例的多个消费者
- html - Bootstrap 正在为表格行添加额外的边框
- web-scraping - requests.get 不返回类似于浏览器的 devtools 的 html
- javascript - 打字稿,新的 Promise 对象的类型是什么?
- javascript - 如何在引导崩溃之间切换包含来自服务器的数据
- python - 无法安装 PyTorch