1

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

用于比较的 XML:链接

4

2 回答 2

1

如果您使用葡萄牙语“descrição”con tilde 和 cedille,可能您需要对键名或结果进行 UTF8 编码,并且可能在列名和键名之间出现不匹配键错误。在将结果导出到 JSON 之前检查结果以查看它们是否包含描述。

于 2012-11-13T14:13:50.503 回答
1

while循环中的翻译是不必要的,你只能在这里出错。只需使用mysql_fetch_object($result)inmysql_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);

特殊字符也可能很麻烦..我认为这个问题很有用

于 2012-11-13T14:07:35.767 回答