【问题标题】:How do I put multiple rows of a MySQL database into a multidimensional array (PHP)?如何将 MySQL 数据库的多行放入多维数组 (PHP)?
【发布时间】:2014-09-13 05:57:45
【问题描述】:

我正在开发一个系统,其中查询检查数据库中匹配多个 id 的记录,并将每一行放入它自己的数组中。到目前为止,我只有最后一行在它自己的数组中回显。以下是查询代码:

$query = "SELECT * FROM messages WHERE senderid IN ($senderids) ORDER BY messageid DESC";
$resource = mysql_query($query, $database);
$result = mysql_fetch_array($resource);
foreach($result as $result1)
    {
    print_r($result1);
    echo '<br>';
    }

这是浏览器中的回声:

2
2
1
1
TEST MSG 2
TEST MSG 2
2014_09_13_01:29:59
2014_09_13_01:29:59

这是应该回显的:

Array ([messageid] => 1 [senderid] => 1 [message] => test message [date] => 2014_09_13_01:01:09)
Array ([messageid] => 2 [senderid] => 1 [message] => TEST MSG 2 [date] => 2014_09_13_01:29:59)

我将如何解决这个问题?

【问题讨论】:

  • 仅供参考....您的代码对 sql 注入开放...搜索 mysqli_ 或 PDO 查询。
  • @NoobEditor $senderid 变量在代码前面使用 mysql_real_escape_string 进行了转义。

标签: php mysql multidimensional-array


【解决方案1】:

mysql_fetch_array 不返回整个结果集,只返回当前游标处的行。您的代码没有移动 mysql 光标;为此,您的代码应为:

$resource = mysql_query($query, $database);
while($row = mysql_fetch_array($resource)){
  print_r($row);
  echo '<br />';
}

此外,对于您发布的所需输出,您应该使用mysql_fetch_assoc,因为它将是带有列名而不是索引数组的哈希

【讨论】:

    【解决方案2】:
    $query = "SELECT * FROM messages WHERE senderid IN ($senderids) ORDER BY messageid DESC";
    $resource = mysql_query($query, $database);
    while($result = mysql_fetch_array($resource))
    {
    print_r($result);    // OR $array[] = $result; and print $array outside the while loop 
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-06
      • 1970-01-01
      • 2014-05-28
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 2017-05-18
      相关资源
      最近更新 更多