PHP & MYSQL : Get all columns, 从行中选择 * 并对结果进行 json 编码

标签 php mysql json printing encode

我正在尝试从 mysql 中获取一个数组并打印每一列及其值。

这是我目前所拥有的:

获取所有列:

$query = "SHOW COLUMNS FROM user_settings";
$resultx = mysql_query($query);$temp=0;$p = array();


while ($row = mysql_fetch_array($resultx)) {
    $p[$temp] = $row["Field"];$temp++;
}

Foreach column name fetch data where user id = $SESSION['id']

foreach ($p as $f) {

        $json = array();
        $newquery = "SELECT * FROM user_settings WHERE uid = '" . $_SESSION['id'] ."'";
        $newresult = mysql_query($newquery);


        while($newrow = mysql_fetch_array($newresult)) {
                $json[$f] = $newrow[$f];
        }

        print json_encode($json);


    }

这很好用。问题是打印的数组是这样的:

{"column1":"data"}{"column2":"data"}{"column3":"data"}

相反,我希望打印 json 编码:

[{"column1":"data","column2":"data","column3":"data"}}

最佳答案

您可以删除所有这些,因为它是多余的。

$query = "SHOW COLUMNS FROM user_settings";
$resultx = mysql_query($query);$temp=0;$p = array();

while ($row = mysql_fetch_array($resultx)) {
    $p[$temp] = $row["Field"];$temp++;
}

同时删除 foreach 循环,这样我们只剩下查询和该查询的 while 循环。

$json = array();
$newquery = "SELECT * FROM user_settings WHERE uid = '" . $_SESSION['id'] ."'";
$newresult = mysql_query($newquery);

print json_encode(mysql_fetch_assoc($newresult));

这应该使 json_encode() 函数编码一个多维结果数组。

还尝试删除 mysql_* 函数并使用 mysqli_* 函数或 PDO,因为 mysql_* 函数已弃用。

关于PHP & MYSQL : Get all columns, 从行中选择 * 并对结果进行 json 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27021422/

相关文章:

javascript - JSON解析多数据

javascript - 高级搜索功能 - 为最终用户提供查询构建器

php - 使用 javascript 启用/禁用按钮的问题

javascript - 将时间格式数据显示到highcharts中

database - MySQL 查询 : list of tag. 名称和语言尚未组合插入 images_urls 中

javascript - 是否可以对返回 JSON 对象的 URL 执行跨站点请求伪造攻击?

javascript - 使用 Dimple.js 渲染图表时出现问题

php - 如何知道用户何时离开 Safari Mobile 应用程序?

php - 如何使用 php 验证上传的 csv/text 文件

php - Laravel 将数据计数附加到数据库对象