【问题标题】:Php multi-dimensional array from mysql result来自mysql结果的php多维数组
【发布时间】:2011-06-30 13:04:39
【问题描述】:

我有一个如下所示的 mysql 表:

id | uid | title     | description | parent
1  |  1  | Portraits | desc.       | photostream
2  |  1  | Abstract  | descr.      | photostream

我正在尝试构建一个最终看起来像这样的多维数组:

Array
(
      [0]
          [id] => 1
          [uid] => 1
          [title] => Portraits
          [description] => desc.
          [parent] => photostream
      [1]
          [id] => 2
          [uid] => 1
          [title] => Abstract
          [description] => descr.
          [parent] => photostream
)

我正在使用选择查询:

$query = mysql_query(
  "SELECT * FROM `table` WHERE `uid`='1' ORDER BY `id` DESC");

有人知道怎么做吗? 谢谢, 列维

【问题讨论】:

  • 如果uid 是数字列,请勿比较或将其分配给字符串(单引号值)。 MySQL 不会抱怨,但是当从字符串到数字的强制转换没有得到您期望的数字时,您可能会感到惊讶。
  • +1 这个问题怎么没有得到任何支持? “有用且清晰”。来吧人们

标签: php mysql arrays multidimensional-array


【解决方案1】:
$query = mysql_query("SELECT * FROM table WHERE uid = '1' ORDER BY id DESC");
$results = array();
while($line = mysql_fetch_array($query, MYSQL_ASSOC)){
    $results[] = $line;
}

【讨论】:

  • $line = mysqli_fetch_assoc($query) 对于任何新来者,因为 mysql 变体已被弃用。
【解决方案2】:

这不包括用于收集数据的 sql 函数,但我为我的问题制作了一个表格(是同样的问题)顺便说一句,这也是我的表格。因此,它更多的是示例而不是解释。

这不是一个完整的解释,而是一个示例代码。


表格:
[ 身份证 |家长 |名称 |href |标题]


代码:

            foreach ($query->result_array() as $row)
{
    if ($row['parent'] === null)
        $data[$row['id']][0]= '<a href="'.$row['href'].'"'.($row['title']!==null)?'title="'.$row['title'].'"':''.'>'.$row['name'].'</a>';
    else 
    {
        $temp = '<a href="'.$row['href'].'"'.($row['title']!==null)?'title="'.$row['title'].'"':''.'>'.$row['name'].'</a>';
        array_push($data[$row['parent']],$temp);
    }
}

我用它来为我的导航栏生成我的链接。然后我使用一个函数来制作一个多级列表。对于我的问题。它的问题非常相似,但这是我的解决方案。

如果你愿意。而不是制作自己的版本。我可以使用您的数据库方案为数据制作类似的代码..

警告:目前这似乎只适用于两级布局。我将即兴编写更多代码并发布我的 sn-p 的下一个版本。

【讨论】:

    【解决方案3】:
    $query = mysql_query("SELECT * FROM table WHERE uid = '1' ORDER BY id DESC");
    $results = array();
    $num_fields=mysql_num_fields($query);
    $num_rows=mysql_num_rows($query);
    while($line = mysql_fetch_array($query)){
    
    for($i=0;$i<$num_rows;$i++
    {
      for($j=0;$j<$num_fields;$j++
      {
    
      $results[$i][$j]=$line[$i][$j];
      }
    
    }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 2013-03-09
      相关资源
      最近更新 更多