mysql查询结果到php数组中

Posted

技术标签:

【中文标题】mysql查询结果到php数组中【英文标题】:mysql query result into php array 【发布时间】:2012-02-16 17:06:45 【问题描述】:

这里有一些代码,我想用phpmysql查询结果存储到一个数组中,但是我的代码返回结果:2h,不是我想要的。(正确的结果应该是36,35,34,33,32)

<?php
set_time_limit(59);
mysql_select_db("mycoon",$db);
mysql_query("SET NAMES utf8"); 
$result = mysql_query("SELECT id,link FROM mytable Order By id DESC LIMIT 0,5");
$new_array[] = $row;
while ($row = mysql_fetch_array($result)) 
    $new_array[$row['id']] = $row;
    $new_array[$row['link']] = $row;

mysql_close($db);// close mysql then do other job with set_time_limit(59)
foreach($new_array as $array)
    echo $array['id'].'<br />';
    echo $array['link'].'<br />';

?>

结果:

36
http://localhost/img/img36.jpg
36
http://localhost/img/img36.jpg
35
http://localhost/img/img35.jpg
35
http://localhost/img/img35.jpg
34
http://localhost/img/img34.jpg
34
http://localhost/img/img34.jpg
33
http://localhost/img/img33.jpg
33
http://localhost/img/img33.jpg
32
http://localhost/img/img32.jpg
32
http://localhost/img/img32.jpg

【问题讨论】:

您的 SQL 似乎无效:WHERE Order By - 缺少WHERE 条件。 @hsz,对。确实,我的原始代码很长,为了方便问,我已经缩短了我的代码,但忘记不要删除where,谢谢。 Can you return an associated array with a number index?、For each result in MySQL query, push to array (complicated) 和 许多 其他人的副本(我们能找到多少?)。 【参考方案1】:

我想你想这样做:

while( $row = mysql_fetch_assoc( $result))
    $new_array[] = $row; // Inside while loop

或者也可以将 id 存储为键

 $new_array[ $row['id']] = $row;

使用第二种方法,您可以直接通过行的 id 来寻址,例如:$new_array[ 5]

【讨论】:

@fishman 我已经更新了。你是这样用的,还是把$new_array[]放了两次?【参考方案2】:

使用 mysql_fetch_assoc 代替 mysql_fetch_array

http://php.net/manual/en/function.mysql-fetch-assoc.php

【讨论】:

看到创建数组的函数被称为 assoc 而不是数组有点有趣:-) mysql_fetch_assoc 自 PHP 7.0 起已弃用:php.net/manual/en/function.mysql-fetch-assoc.php 改用 mysqli_fetch_assoc【参考方案3】:

这个呢:

while ($row = mysql_fetch_array($result)) 

    $new_array[$row['id']]['id'] = $row['id'];
    $new_array[$row['id']]['link'] = $row['link'];

要检索链接和ID:

foreach($new_array as $array)
       
   echo $array['id'].'<br />';
   echo $array['link'].'<br />';

【讨论】:

您没有将$new_array[ $row['id']] 初始化为数组。 $new_array[ $row['id']] = array( 'id' =&gt; $row['id'], 'link' =&gt; $row['link']);(假设您想要并且需要更改值/键)不会工作得更快吗? $row['id'] 是动态的,所以在循环中,$new_array[$row['id']] 看起来像: $new_array[1] = '...', $new_array [2] = '...',$new_array[3] = '...' 等,试试 print_r($new_array);

以上是关于mysql查询结果到php数组中的主要内容,如果未能解决你的问题,请参考以下文章

比较 php MySQL 查询结果数组以从其中一个数组中获取关联值

MySQL/PHP 输出数组重复查询然后显示结果,如何删除查询? [复制]

php mysql 查询

PHP - 从查询结果中获取对象数组

MySQL 结果到 PHP 数组

从循环查询 PHP MYSQL JSON 合并数组