PHP Json没有一致性

时间:2012-11-13 14:01:11

标签: php mysql json

我正在使用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

2 个答案:

答案 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之前检查结果以查看它们是否包含描述。