由于mysql_fetch_array() 函数只是从结果集中取出一条数据 所以不能直接return
mysql_fetch_array ( $result ) 而是必须先把结果集中的所有条目都取出来 放到一个数组中 然后在把这个数组return到相关页面 最后通过smarty->assign()传递到对应模板遍历...
问题是我不知道如何才能把 mysql_query()返回的结果集都存到一个数组中...
有高手知道吗?请指点一下 不胜感激!
首先,mysql_query()返回的结果,是一个mysql的资源类型(结果集),并不是一个的PHP数组。需要通过类似于mysql_fetch_array()之类的函数,逐行输出成为数组。
第二,mysql_fetch_array(),会从结果集中取得一行作为关联数组,或数字数组,或二者兼有。在常见的数据表查询中,会导致出现同一行数据反复出现两次,和我们预想要的不符合。所以建议使用mysql_fetch_assoc:只要关联数组。
我把我自己框架中的方法打两个出来,你详细研究一下就明白了(代码片段,不可直接执行测试):
public function fetchArray($sql)
{
$data = false;
$res = mysql_query($sql, $this->db);
if ($res !== false)
{
$data = mysql_fetch_assoc($res);
}
return $data;
}
public function fetchAll($sql)
{
$data = false;
$res = mysql_query($sql, $this->db);
if ($res !== false)
{
while($row = mysql_fetch_assoc($res))
{
$data[]= $row;
}
}
return $data;
}
fetchArray和fetchAll函数是自定义函数,如果你把这两个函数结合$this->db写入一个数据库类库的话(也或者直接使用函数里的代码到你的代码中,$this->db就是一个数据库连接句柄),就可以很方便的使用了。
fetchArray:获取sql查询语句导致的结果集中的一行,作为一个一维数组返回。
fetchAll:获取sql查询语句导致的结果集中的所有数据,作为一个二维数组返回。
第二,mysql_fetch_array(),会从结果集中取得一行作为关联数组,或数字数组,或二者兼有。在常见的数据表查询中,会导致出现同一行数据反复出现两次,和我们预想要的不符合。所以建议使用mysql_fetch_assoc:只要关联数组。
我把我自己框架中的方法打两个出来,你详细研究一下就明白了(代码片段,不可直接执行测试):
public function fetchArray($sql)
{
$data = false;
$res = mysql_query($sql, $this->db);
if ($res !== false)
{
$data = mysql_fetch_assoc($res);
}
return $data;
}
public function fetchAll($sql)
{
$data = false;
$res = mysql_query($sql, $this->db);
if ($res !== false)
{
while($row = mysql_fetch_assoc($res))
{
$data[]= $row;
}
}
return $data;
}
fetchArray和fetchAll函数是自定义函数,如果你把这两个函数结合$this->db写入一个数据库类库的话(也或者直接使用函数里的代码到你的代码中,$this->db就是一个数据库连接句柄),就可以很方便的使用了。
fetchArray:获取sql查询语句导致的结果集中的一行,作为一个一维数组返回。
fetchAll:获取sql查询语句导致的结果集中的所有数据,作为一个二维数组返回。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-09-22
$result = mysql_query($quertStr);
$arr = array();
while($row =mysql_num_rows($result)){
$arr[]=$row;
}
return $arr;
$arr = array();
while($row =mysql_num_rows($result)){
$arr[]=$row;
}
return $arr;