【问题标题】:PHP & MYSQL: Get all columns, select * from row and json encode the resultsPHP & MYSQL:获取所有列,从行中选择 * 并对结果进行 json 编码
【发布时间】:2015-01-17 05:47:40
【问题描述】:

我正在尝试从 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 列名获取数据 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"}}

【问题讨论】:

  • 你为什么要获取列,然后查询所有列的同一个表?但是在一个不相关的注释上,尝试将打印移动到 foreach 循环之外
  • 因为我正在学习php。我不确定我还能怎么做。可以请教吗?
  • @DavidJones 如果我将打印移出 foreach 循环,我只会得到:{"column3":"data"}

标签: php mysql json printing encode


【解决方案1】:

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

$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_* 函数已被贬值。

【讨论】:

  • 为什么需要循环。我怀疑您是否曾经有 2 个用户具有相同的 id,所以 userid 是唯一的。
  • 我明白了:[{"0":"data1","column1":"data1","1":"data2","column2":"data2","2": "data3","column3":"data3"]
  • 它还打印每列的编号及其值?
  • @jQuerybeast 我认为你需要使用 mysql_fetch_assoc 而不是 mysqk_fetch_array (我已经多年没有使用这些函数了!)
  • @DavidJones 谢谢
【解决方案2】:

试试这个:

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

  print json_encode(mysql_fetch_array($newresult));

我认为你不需要剩下的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 2011-06-19
    • 1970-01-01
    • 2016-12-04
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多