Caractères de nouvelle ligne manquants lors de l'obtention des données de la base de données PostgreSQL à l'aide de PHP
P粉696146205
2023-08-06 13:44:42
<p>Titre : Caractère de nouvelle ligne manquant lors de l'obtention de données de la base de données PostgreSQL à l'aide de PHP<br />Texte :<br />J'ai rencontré un problème lors de l'obtention de données de la base de données PostgreSQL à l'aide de PHP. J'utilise Navicat pour afficher les données de ma base de données et il affiche clairement les nouvelles lignes (n) dans les données comme ceci : </p><p><code></code><
<pre class="brush:php;toolbar:false;">addr=1
adresse = 2
adresse=3
adresse = 4
adresse=5
adresse=6
j=6
[rs485] comid=1
comid=1
[rs485] débit en bauds = 115 200
bdrate=115200
...</pré>
<p>Cependant, lorsque j'utilise PHP pour obtenir ces données, les nouvelles lignes semblent être perdues. Voici le code PHP que j'utilise pour obtenir les données : </p>
<pre class="lang-php Prettyprint-override"><code>$host = '192.168.1.92';
$db = 'GneMaster';
$utilisateur = 'postgres' ;
$pass = '123456';
$dsn = "pgsql:host=$host;port=5432;dbname=$db;options='--client_encoding=UTF8'";
$opter = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES =>
PDO::ATTR_STRINGIFY_FETCHES =>
];
$pdo = nouveau PDO($dsn, $user, $pass, $opt);
$id = '648c0d5dae53ac34094ede6d';
$sql = "SELECT réponsecontent FROM stationcmd WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id, PDO::PARAM_STR);
$stmt->exécuter();
while ($row = $stmt->fetch())
{
echo "Vérification des sauts de ligne : n" ;
$CRLFPos = strpos($row['responsecontent'], "rn");
$LFPos = strpos($row['responsecontent'], "n");
$CRPos = strpos($row['responsecontent'], "r");
si ($CRLFPos !== faux) {
echo "CRLF trouvé à la position : " $CRLFPos "n" ;
}
si ($LFPos !== faux) {
echo "LF trouvé à la position : " $LFPos "n" ;
}
si ($CRPos !== faux) {
echo "CR trouvé à la position : " $CRPos "n" ;
}
if ($CRLFPos === false && $LFPos === false && $CRPos === false) {
echo "Aucun saut de ligne trouvé dans réponsecontentn";
}
}
</code></pre>
<p>La sortie de ce script PHP ne contient aucun retour à la ligne, comme indiqué ci-dessous : </p>
<pre class="brush:php;toolbar:false;">addr=1addr=2addr=3addr=4addr=5addr=6j=6[rs485] comid=1comid=1[rs485] baudrate=115200bdrate=115200.. .≪/pré>
<p>Pourquoi les sauts de ligne sont-ils perdus lorsque j'obtiens des données à l'aide de PHP et comment puis-je les conserver ? <br /><br />J'aimerais pouvoir conserver les nouvelles lignes d'origine lors de l'obtention de données à partir d'une base de données PostgreSQL à l'aide de PHP, comme on le voit dans Navicat.D'après ce que j'ai compris, lorsque je reçois une chaîne de la base de données, elle doit conserver tous les caractères, y compris les nouvelles lignes. <br /><br />L'approche que j'ai essayée consistait à obtenir les données directement à partir de la base de données et à les afficher. Cependant, le résultat obtenu ne contient aucun retour à la ligne. J'ai également essayé de rechercher des caractères de nouvelle ligne (n, r, rn) en PHP mais ces caractères ne sont pas trouvés dans mes données. <br /><br />Ce à quoi je m'attends, c'est que lorsque j'obtiens et génère les données à l'aide de PHP, elles ressemblent à celles de Navicat, c'est-à-dire que les données doivent contenir des nouvelles lignes. Cependant, le résultat réel est que les données que je reçois ne contiennent pas de nouvelles lignes. <br /><br />J'ai également consulté de la documentation sur PHP et PostgreSQL, mais je n'ai trouvé aucune information relative à ce problème. J'ai cherché sur Stack Overflow et d'autres forums connexes, mais je n'ai trouvé aucun problème ou solution similaire. <br /><br />Je cherche un moyen de conserver les nouvelles lignes d'origine lors de la récupération de données en PHP. J'ai quelques connaissances en PHP et PostgreSQL mais je n'ai pas trouvé de solution à ce problème. J'espère que quelqu'un pourra m'aider à résoudre ce problème. </p><p><br /></p>
Désolé pour la confusion. Le code PHP que j'ai fourni se connecte à une base de données PostgreSQL à l'adresse 192.168.1.92, mais la base de données que je consulte dans Navicat est à l'adresse 192.168.1.93. La base de données 192.168.1.93 contient des nouvelles lignes, contrairement à la base de données 192.168.1.92. Cette différence est à l'origine du problème que j'ai rencontré. Je suis profondément désolé pour toute confusion causée.