如何使用php打印json响应

如何使用php打印json响应,php,mysql,json,utf-8,Php,Mysql,Json,Utf 8,我正在用php构建一个SimilWeb服务。此web服务可以读取数据库表中的所有记录,并返回json格式的记录列表 这是我的getArticoli.php文件的代码: <?php require_once('lib/connection.php'); $query_Articolo = "SELECT CodArticolo,NomeArticolo,Quantita,CodiceBarre, PrezzoAttuale, PrezzoRivenditore,PrezzoIngrosso

我正在用php构建一个SimilWeb服务。此web服务可以读取数据库表中的所有记录,并返回json格式的记录列表

这是我的getArticoli.php文件的代码:

<?php
require_once('lib/connection.php');
$query_Articolo = "SELECT CodArticolo,NomeArticolo,Quantita,CodiceBarre, PrezzoAttuale, PrezzoRivenditore,PrezzoIngrosso 
         FROM VistaArticoli ";

$result_Articoli = $connectiondb->query($query_Articolo);
$answer          = array ();
while ($row_Articoli = $result_Articoli->fetch_assoc()) {
    $answer[] = ["id"                => $row_Articoli['CodArticolo'],
                 "nome"              => '"' . $row_Articoli['NomeArticolo'] . '"',
                 "quantita"          => $row_Articoli['Quantita'],
                 "codiceBarre"       => $row_Articoli['CodiceBarre'],
                 "codartFornitore"   => $row_Articoli['CodiceBarre'],
                 "PrezzoAttuale"     => $row_Articoli['PrezzoAttuale'],
                 "prezzoRivenditore" => $row_Articoli['prezzoRivenditore'],
                 "prezzoIngrosso"    => $row_Articoli['prezzoIngrosso']];
}
//echo "fine";
echo json_encode($answer);
?>
如果从响应中删除此字段,则可以正确地看到json响应

此字段中有a-z/0-9中的任意字符和特殊字符,如“/*?-和其他”

这些特殊字符可能会导致json答案的任何错误吗

编辑 我的查询限制为5,以下是回复:


首先,删除那些无关的引号字符。你不需要它们,它们会在路上伤害你:

while ($row_Articoli = $result_Articoli->fetch_assoc()) {
    $answer[] = [
                 "id"                => $row_Articoli['CodArticolo'],
                 "nome"              => $row_Articoli['NomeArticolo'],
                 "quantita"          => $row_Articoli['Quantita'],
                 "codiceBarre"       => $row_Articoli['CodiceBarre'],
                 "codartFornitore"   => $row_Articoli['CodiceBarre'],
                 "PrezzoAttuale"     => $row_Articoli['PrezzoAttuale'],
                 "prezzoRivenditore" => $row_Articoli['prezzoRivenditore'],
                 "prezzoIngrosso"    => $row_Articoli['prezzoIngrosso']
               ];
}
然后,按原样运行查询(没有
限制
),然后运行
echo json_last_error_msg(),这可能会提示您发生了什么

另外,由于您的数据库是意大利语的,所以它的编码可能不是UTF-8<代码>json_编码
需要UTF-8编码数据。因此,在对数组进行json编码之前,您可以尝试对文章名称进行
utf8\u编码

             "nome"              => utf8_encode($row_Articoli['NomeArticolo']),
看看你能得到什么


将DB字符集更改为“utf8mb4”也可以做到这一点,通常建议这样做。

首先,删除那些无关的引号字符。你不需要它们,它们会在路上伤害你:

while ($row_Articoli = $result_Articoli->fetch_assoc()) {
    $answer[] = [
                 "id"                => $row_Articoli['CodArticolo'],
                 "nome"              => $row_Articoli['NomeArticolo'],
                 "quantita"          => $row_Articoli['Quantita'],
                 "codiceBarre"       => $row_Articoli['CodiceBarre'],
                 "codartFornitore"   => $row_Articoli['CodiceBarre'],
                 "PrezzoAttuale"     => $row_Articoli['PrezzoAttuale'],
                 "prezzoRivenditore" => $row_Articoli['prezzoRivenditore'],
                 "prezzoIngrosso"    => $row_Articoli['prezzoIngrosso']
               ];
}
然后,按原样运行查询(没有
限制
),然后运行
echo json_last_error_msg(),这可能会提示您发生了什么

另外,由于您的数据库是意大利语的,所以它的编码可能不是UTF-8<代码>json_编码
需要UTF-8编码数据。因此,在对数组进行json编码之前,您可以尝试对文章名称进行
utf8\u编码

             "nome"              => utf8_encode($row_Articoli['NomeArticolo']),
看看你能得到什么


将DB字符集更改为“utf8mb4”也可以做到这一点,这通常是推荐的。

为什么不能只使用
“nome”=>$row_Articoli['nometarticolo']
并保留json解析器转义?你的方法是对的,但我认为主要问题是这个'。还有这个'。“'in'。$row_Articoli['nometicolo'.”'您是否尝试启用错误报告?这可能会帮助您理解为什么JSON不能被构造。@marian0,第一次,在我试图更改此代码以修复我的问题之后,我写了“nome”=>$row_Articoli['nomatarticolo']。但不起作用您需要删除“Article Name”周围的引号。为什么您不能只使用“
”nome“=>$row\u Articoli['nometarticolo']
”并让json解析器转义?您的方法是对的,但我认为主要问题是这个“.”和这个“.”在“$row\u Articoli['nometarticolo']”中“.”您尝试过启用错误报告吗?这可能会帮助您理解为什么JSON不能被构造。@marian0,第一次,在我试图更改此代码以修复我的问题之后,我写了“nome”=>$row_Articoli['nomatarticolo']。但是不行,你需要删除“文章名”周围的引号。谢谢。你的代码可以工作。现在对于我的数据库,这个字符集被重新命名为意大利语???谢谢将其设置到
utf8mb4
。看看这个:谢谢你。你的代码可以工作。现在对于我的数据库,这个字符集被重新命名为意大利语???谢谢将其设置到
utf8mb4
。看看这个: