我正在用php构建一个simil web服务。此Web服务可以从数据库表中读取所有记录,并以json格式返回它的列表。
这是我的getArticoli.php文件的代码:
UserID
现在,如果我尝试打开此页面,请使用此网址:http://localhost/easyOrdine/getArticoli.php
我没有得到json_response。
在数据库表中,有1200条记录。如果我尝试在while循环中插入echo消息,我会看到它。
我注意到问题出现在这个领域:
SELECT KeyID, UserID
FROM (
SELECT KeyID, UserID,
rn, COUNT(*) OVER (PARTITION BY UserID, grp ORDER BY KeyID DESC) AS rnk
FROM (
SELECT KeyID, UserID,
ROW_NUMBER() OVER (ORDER BY KeyID DESC) AS rn,
ROW_NUMBER() OVER (ORDER BY KeyID DESC) -
ROW_NUMBER() OVER (PARTITION BY UserID
ORDER BY KeyID DESC) AS grp
FROM mytable) AS t) AS x
ORDER BY rn + rnk, KeyID
如果我从响应中删除此字段,我可以正确地看到json响应。
在此字段中,有来自a-z / 0-9的任何字符和特殊字符,如“/ *? - 和其他”。
这些特殊字符可能会导致json答案的任何错误吗?
EDIT 我的查询限制为5,这是回复:
<?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);
?>
答案 0 :(得分:2)
首先,删除那些无关的引号字符。你不需要他们,他们可能会伤害你的道路:
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']
];
}
然后,按原样运行您的查询(不包含LIMIT
),然后运行echo json_last_error_msg()';
,这可以为您提供正在发生的事情的提示。
另外,由于你的数据库是意大利语,也许它的编码不是UTF-8。 json_encode
需要 UTF-8编码数据。因此,您可以在json_encoding数组之前尝试utf8_encode
您的文章名称:
"nome" => utf8_encode($row_Articoli['NomeArticolo']),
看看你得到了什么。
将数据库字符集更改为“utf8mb4”也可以解决问题,通常建议使用。