【问题标题】:JSON formatting errors for two files两个文件的 JSON 格式错误
【发布时间】:2013-04-23 12:42:43
【问题描述】:

我想知道,我刚刚创建了我的数据表,但其中两个给出了 JSON 格式错误。我正在将这两个表中的两个表连接起来。我尝试在 phpmyadmin 中运行查询,它运行良好这是我的服务器端文件的一个示例:

<?php
$username="drup197";
$password="*****";
$database="census";
$server="localhost";

$link = mysqli_connect($server,$username,$password,$database);

//@mysql_select_db($database,$link) or die( "Unable to select database");
$query = "
    SELECT *   
    FROM national_age_gender_demographics INNER JOIN arizona_age_gender_demogrpahics
    WHERE national_age_gender_demographics.age_group = arizona_age_gender_demogrpahics.age_group
    ORDER BY national_age_gender_demographics.index_number";

$result = mysqli_query($link,$query);

if(!$result)  die( "Query: " . $query . "\nError:" . mysql_error() );

//print_r($row);
$tableData = '{"aaData": [[';
$numRows = $result->num_rows;
$row = mysqli_fetch_array($result);

for ($i = 0; $i < $numRows; $i++) {
    if ($i != 0) {
        $tableData .= ",[";
    }
    $tableData .= '"' . $row['age_group'] . '",';
    $tableData .= '"' . $row['national_age_gender_demographics.both_pop'] . '",';
    $tableData .= '"' . $row['national_age_gender_demographics.male_pop'] . '",';
    $tableData .= '"' . $row['national_age_gender_demographics.female_pop'] . '",';
    $tableData .= '"' . $row['national_age_gender_demographics.male_percent'] . '",';
    $tableData .= '"' . $row['national_age_gender_demographics.female_percent'] . '",';
    $tableData .= '"' . $row['national_age_gender_demographics.both_percent'] . '",';
    $tableData .= '"' . $row['national_age_gender_demographics.males_per_100_females'] . '",';
    $tableData .= '"' . $row['arizona_age_gender_demographics.both_pop'] . '",';
    $tableData .= '"' . $row['arizona_age_gender_demographics.male_pop'] . '",';
    $tableData .= '"' . $row['arizona_age_gender_demographics.female_pop'] . '",';
    $tableData .= '"' . $row['arizona_age_gender_demographics.male_percent'] . '",';
    $tableData .= '"' . $row['arizona_age_gender_demographics.female_percent'] . '",';
    $tableData .= '"' . $row['arizona_age_gender_demographics.both_percent'] . '",';
    $tableData .= '"' . $row['arizona_age_gender_demographics.males_per_100_females'] . '"]';
    if ($i != $numRows - 1) {
        $row = mysqli_fetch_array($result);
    }
}
$tableData .= ']}';
echo $tableData;
?>

有人知道这里出了什么问题吗?

【问题讨论】:

  • 您为什么要尝试自己构建 JSON 数组?为什么不为此使用 PHP 内置函数 json_encode()json_decode()
  • 或者如果这些功能不可用,请下载 PEAR 版本
  • Re:SV 使用单个表时效果很好。但是,当我加入两个表时,我特别遇到了麻烦。

标签: php json parsing formatting


【解决方案1】:

首先 Steven 是对的,最好使用 json 编码(或至少更简洁)来创建您的 json,让您免于繁琐的 if 和括号业务。

我还建议使用 mysqli_fetch_assoc 而不是使用 mysqli_fetch_array,正如您当前指定的那样,它应该返回关联和编号结果(请参阅此处 http://php.net/manual/en/mysqli-result.fetch-array.php),这可能会弄乱您的结果。

例如:

...
$row = mysqli_fetch_assoc($result);
$json_data = json_encode($row);
echo $json_data;
?>

试一试,看看效果如何?

【讨论】:

  • 实际上,我自己发现了错误——我在查询中的几个地方拼写了“demographics”错误。虽然我不再收到错误,但行最终为空白。有人可以在这里帮助我吗?仅供参考,我也尝试使用上述方法,但是处理和加载陷入了无限循环。
  • 查询正确,返回多少行?你可以通过回显 $numRows = $result->num_rows; 来发现这一点
  • 猜我错了,我仍然收到错误消息。但是,在使用您的方法时,经过仔细检查,我收到以下 JavaScript 错误:无法获取未定义或空引用的属性“长度”:jquery.dataTables.min.js,第 59 行字符 74
  • 看起来像一个javascript问题,我会首先测试json输出是否有效(只需点击页面以输出上述json)并且符合预期。然后仔细检查您的 JS 是否正常工作,并且在包含 dataTables 脚本之前已包含 jquery。
  • 仅供参考,当使用我的方法时,直接访问 PHP 文件时,我似乎遇到了未定义的索引错误。我将在一个新问题中提出这个问题。
猜你喜欢
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
  • 2020-06-30
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多