mysql查询结果到php数组中
Posted
技术标签:
【中文标题】mysql查询结果到php数组中【英文标题】:mysql query result into php array 【发布时间】:2012-02-16 17:06:45 【问题描述】:这里有一些代码,我想用php将mysql查询结果存储到一个数组中,但是我的代码返回结果: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' => $row['id'], 'link' => $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 查询结果数组以从其中一个数组中获取关联值