首頁  >  問答  >  主體

使用PHP從PostgreSQL資料庫取得資料時缺少換行符

<p>標題:使用PHP從PostgreSQL資料庫取得資料時缺少換行符號<br />正文:<br />我在使用PHP從PostgreSQL資料庫取得資料時遇到了一個問題。我使用Navicat來查看我的資料庫中的數據,它清楚地顯示了數據中的換行符(n),如下所示:</p><p><code></code>< /p> <pre class="brush:php;toolbar:false;">addr=1 addr=2 addr=3 addr=4 addr=5 addr=6 j=6 [rs485] comid=1 comid=1 [rs485] baudrate=115200 bdrate=115200 ...</pre> <p>然而,當我使用PHP獲取這些資料時,換行符號似乎丟失了。以下是我用來取得資料的PHP程式碼:</p> <pre class="lang-php prettyprint-override"><code>$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"; } } </code></pre> <p>這個PHP腳本的輸出不包含任何換行符,如下所示:</p> <pre class="brush:php;toolbar:false;">addr=1addr=2addr=3addr=4addr=5addr=6j=6[rs485] comid=1comid=1[rs485] baudrate=115200bdrate=115200.. .</pre> <p>為什麼我使用PHP獲取資料時會丟失換行符,我該如何保留它們? <br /><br />我希望在使用PHP從PostgreSQL資料庫取得資料時能夠保留原始的換行符,就像在Navicat中看到的一樣。據我了解,當我從資料庫中獲取一個字串時,它應該保留所有字符,包括換行符。 <br /><br />我嘗試的方法是直接從資料庫取得資料並輸出它。然而,結果輸出中沒有包含任何換行符。我還嘗試在PHP中尋找換行符(n、r、rn),但在我的資料中沒有找到這些字元。 <br /><br />我期望的結果是,當我使用PHP獲取和輸出資料時,它看起來與在Navicat中一樣,即資料應該包含換行符。然而,實際結果是我收到的資料不包含換行符。 <br /><br />我也查閱了一些關於PHP和PostgreSQL的文檔,但沒有找到與此問題相關的資訊。我在Stack Overflow和其他相關論壇上進行了搜索,但沒有找到類似的問題或解決方案。 <br /><br />我正在尋找一種在PHP中獲取資料時保留原始換行符的方法。我對PHP和PostgreSQL有一些了解,但還沒有找到解決這個問題的方法。我希望有人能幫助我解決這個問題。 </p><p><br /></p>
P粉696146205P粉696146205460 天前622

全部回覆(1)我來回復

  • P粉309989673

    P粉3099896732023-08-07 09:27:46

    對於造成的混淆我感到抱歉。我提供的PHP程式碼連接到了位於192.168.1.92的PostgreSQL資料庫,但我在Navicat中查看的資料庫位於192.168.1.93。位於192.168.1.93的資料庫包含換行符,而位於192.168.1.92的資料庫則不包含。這種差異導致了我遇到的問題。對於造成的任何混淆,我深感抱歉。

    回覆
    0
  • 取消回覆