在使用PHP从PostgreSQL数据库获取数据时缺少换行符
P粉696146205
P粉696146205 2023-08-06 13:44:42
[PHP讨论组]

标题:使用PHP从PostgreSQL数据库获取数据时缺少换行符
正文:
我在使用PHP从PostgreSQL数据库获取数据时遇到了一个问题。我使用Navicat来查看我的数据库中的数据,它清楚地显示了数据中的换行符(n),如下所示:

addr=1
addr=2
addr=3
addr=4
addr=5
addr=6
j=6
[rs485] comid=1
comid=1
[rs485] baudrate=115200
bdrate=115200
...

然而,当我使用PHP获取这些数据时,换行符似乎丢失了。以下是我用于获取数据的PHP代码:

$host = '192.168.1.92';
$db   = 'GneMaster';
$user = 'postgres';
$pass = '123456';

$dsn = "pgsql:host=$host;port=5432;dbname=$db;options='--client_encoding=UTF8'";
$opt = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::ATTR_STRINGIFY_FETCHES => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);

$id = '648c0d5dae53ac34094ede6d';

$sql = "SELECT responsecontent FROM stationcmd WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id, PDO::PARAM_STR);
$stmt->execute();

while ($row = $stmt->fetch())
{
    echo "Checking for line breaks: n";

    $CRLFPos = strpos($row['responsecontent'], "rn");
    $LFPos = strpos($row['responsecontent'], "n");
    $CRPos = strpos($row['responsecontent'], "r");

    if ($CRLFPos !== false) {
        echo "CRLF found at position: " . $CRLFPos . "n";
    }
    if ($LFPos !== false) {
        echo "LF found at position: " . $LFPos . "n";
    }
    if ($CRPos !== false) {
        echo "CR found at position: " . $CRPos . "n";
    }
    if ($CRLFPos === false && $LFPos === false && $CRPos === false) {
        echo "No line breaks found in responsecontentn";
    }
}

这个PHP脚本的输出不包含任何换行符,如下所示:

addr=1addr=2addr=3addr=4addr=5addr=6j=6[rs485] comid=1comid=1[rs485] baudrate=115200bdrate=115200...

为什么我使用PHP获取数据时会丢失换行符,我该如何保留它们?

我希望在使用PHP从PostgreSQL数据库获取数据时能够保留原始的换行符,就像在Navicat中看到的一样。据我了解,当我从数据库中获取一个字符串时,它应该保留所有字符,包括换行符。

我尝试的方法是直接从数据库获取数据并输出它。然而,结果输出中没有包含任何换行符。我还尝试在PHP中查找换行符(n、r、rn),但在我的数据中没有找到这些字符。

我期望的结果是,当我使用PHP获取和输出数据时,它看起来与在Navicat中一样,即数据应该包含换行符。然而,实际结果是我收到的数据不包含换行符。

我也查阅了一些关于PHP和PostgreSQL的文档,但没有找到与此问题相关的信息。我在Stack Overflow和其他相关论坛上进行了搜索,但没有找到类似的问题或解决方案。

我正在寻找一种在PHP中获取数据时保留原始换行符的方法。我对PHP和PostgreSQL有一些了解,但还没有找到解决这个问题的方法。我希望有人能帮助我解决这个问题。


P粉696146205
P粉696146205

全部回复(1)
P粉309989673

对于造成的混淆我感到抱歉。我提供的PHP代码连接到了位于192.168.1.92的PostgreSQL数据库,但我在Navicat中查看的数据库位于192.168.1.93。位于192.168.1.93的数据库包含换行符,而位于192.168.1.92的数据库则不包含。这种差异导致了我遇到的问题。对于造成的任何混淆,我深感抱歉。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号