【问题标题】:PHP Creating JSON array list (data coming from MySQL)PHP 创建 JSON 数组列表(来自 MySQL 的数据)
【发布时间】:2014-03-20 07:58:13
【问题描述】:

我是 Json 的新手,我无法用从 mysql 查询中收集的数据填充 json 列表。 列表中只填充了一个值,并且它不断重复而不是显示所有值。 代码是:

<?php

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$db = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db('abcd');
$jsonData = 0;

$result = mysql_query("SELECT picname,title,date,time,location,timestamp FROM uploaded_photo_data ORDER BY timestamp DESC ");
if (!$result) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}
if (mysql_num_rows($result) > 0) {

    $num = mysql_num_rows($result);

    while ($row = mysql_fetch_assoc($result)) {
    $a = $row['location']."/".$row['picname']; 
        echo $row['timestamp'];
        echo $a;
        echo $row['picname'];
        echo $row['title'];
        echo $row['location'];
        echo "<br></br>";

        $dir = $row['location']."/"; 
        $jsonData = '{';     
        $x = 0;
        $dirHandle = opendir($dir);
        while($x!=$num){
            $x++;
            $jsonData .= '"img'.$x.'":{ "num":"'.$x.'","title":"'.$row['title'].'","src":"'.$a.'", "timestamp":"'.$row['timestamp'].'"},<br></br> ';
        }

    }
}
closedir($dirHandle);
        $jsonData = chop($jsonData, ",");
        $jsonData .= '}'; 
        echo $jsonData; echo $x;

【问题讨论】:

  • 这段代码没有逻辑。您在第一个 while 循环内创建 $jsonData 变量,然后在同一个循环中(仍在处理第一行)您迭代行数并填充 $jsonData。一次又一次,而$jsonData 总是被覆盖。您的 $jsonData 最终将包含最后一个数据库结果行 n 次,其中 n 是结果数。我的建议,从头开始。

标签: php mysql ajax json database


【解决方案1】:

您可以使用 json_encode 方法将数组编码为 JSON。

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>

上面的例子会输出:

{"a":1,"b":2,"c":3,"d":4,"e":5}

php.net/manual/en/function.json-encode.php

编辑:

也许这对你有用:

$jsonData = array();
while ($row = mysql_fetch_assoc($result)) {
    $a = $row['location']."/".$row['picname']; 
    echo $row['timestamp'];
    echo $a;
    echo $row['picname'];
    echo $row['title'];
    echo $row['location'];
    echo "<br></br>";

    $dir = $row['location']."/";    
    $x = 0;

    while($x!=$num){
        $x++;
        $img = 'img'.$x;
        $jsonData[$img] = array(
            "num" => $x,
            "title" => $row['title'],
            "src" => $a,
            "timestamp" => $row['timestamp']
        );
    }
}

print json_encode($jsonData);

【讨论】:

  • 完美答案。但是如果你用代码形式的问题来解决这个问题会更好。
猜你喜欢
  • 2013-11-29
  • 2020-09-28
  • 2014-05-29
  • 1970-01-01
  • 2022-09-22
  • 2010-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多