我正在使用PHP页面在我的MySQL数据库中获取一些数据,我使用xml结构来做到这一点,但是因为我发现JSON快一点,所以我决定将我的所有网络服务器迁移到那里。
我使用完全相同的代码从数据库中检索数据,但生成的JSON无法获取所有数据;某些字段(如Description
)和其他字段(如Nome
)有时会作为空对象出现。在数据库中一切正常,XML脚本仍然运行正常。
这是我正在使用的PHP脚本:
<?php
header('Content-type: application/json');
$banco = "*******";
$usuario = "*******";
$senha = "*******";
$hostname = "localhost";
$conn = mysql_connect($hostname,$usuario,$senha); mysql_select_db($banco) or die( "Cant Connect MySQL");
$result = mysql_query("SELECT * FROM users");
$arrayOfChildren = Array();
$i = 0;
while($row = mysql_fetch_array($result))
{
$Balada = array(
'Id'=>($row['Id']),
'Nome'=>($row['Nome']),
'Endereco'=> ($row['Endereco']),
'Telefone'=>($row['Telefone']),
'Description'=>($row['Descricao']),
'Genero' => ($row['Genero']),
'Pagamento' => ($row['FormasPagamento']),
'NomeLista' => ($row['NomeLista'])
);
$arrayOfChildren[] = $Balada;
$i++;
}
$myJSON = json_encode($arrayOfChildren);
echo($myJSON);
?>
生成的JSON:Link
用于比较的XML:Link
答案 0 :(得分:1)
while循环中的翻译是不必要的,你只能在这里犯错误。只需在mysql_fetch_object($result)
的staid中使用mysql_fetch_array($result)
,然后将$row
放入数组中。
$arrayOfChildren = Array();
while($row = mysql_fetch_object($result)) $arrayOfChildren[] = $row ;
echo json_encode($arrayOfChildren);
甚至更好的是你可以使用PDO或MSQLi。这是一个MSQLi示例:
$mysqli = new mysqli($hostname,$usuario,$senha, $banco);
$result = $mysqli->query("SELECT * FROM users");
$rows = Array();
while ($row = $result->fetch_object()) $rows[] = $row;
echo json_encode($rows);
特殊字符也很麻烦......我认为this question可能很有用
答案 1 :(得分:1)
如果您使用葡萄牙语“descrição”con tilde和cedille,可能需要UTF8编码密钥的名称或结果,并且列名和密钥名称之间可能存在不匹配密钥错误。在将结果导出到JSON之前检查结果以查看它们是否包含描述。