mysql_fetch_array()的问题

十三月二十一 2008-11-23 03:08:12

查询两个表
表1-user
+----+------+---------+-------+-------+
| id | name | ne_name | count | tt |
+----+------+---------+-------+-------+
| 1 aa | xa | 5 | yillo |
| 2 | bb | xb | 10 | red |
| 3 | cc | xc | 14 | blue |
| 4 | dd | xd | 34 | black |
| 5 | ee | xa | 23 | write |
+----+------+---------+-------+-------+
表2-userinfo
+----+--------+----------------+
| sn | userid | info |
+----+--------+----------------+
| 1 | 1 | 2005054dsf |
| 2 | 1 | fdsfewfdsfds |
| 3 | 1 | gdsgergergrtre |
| 7 | 3 | fgbdfvbcbfdgr |
| 8 | 3 | 45r2343234were |
| 9 | 3 | wfyhtyjtyjyjy |
+----+--------+----------------+
查询语句
<?php
require_once("DBfunction.php");
$DB=new MySql('localhost','root','root','test');
$sql1="select userid,info from userinfo";
$sql2="select name,tt from users";
$query1=$DB->query($sql1);
$query2=$DB->query($sql2);
$info_data=$DB->fetch_array($query1);
$user_data=$DB->fetch_array($query2);
$DB->free($query1);
$DB->free($query2);
$DB->close();
print_r($info_data);
print_r($user_data);
?>

数据库类函数
<?php
class MySql{
var $queryCount = 0;
var $conn;
var $result;
var $data=array();
/**连接数据库**/
function MySql($dbHost='',$dbUser='',$dbPass='',$dbName=''){
$this->conn=@mysql_connect($dbHost,$dbUser,$dbPass)
mysql_query("SET NAMES 'utf8'");
@mysql_select_db($dbName,$this->conn);
}
/**关闭数据库**/
function close(){
return mysql_close($this->conn);
}
function query($sql){
$this->result=mysql_query($sql);
$this->queryCount++;
return $this->result;
}
function fetch_array($query){
mysql_data_seek($query,0);
while($this->rows=mysql_fetch_array($query)){
$this->data[]=$this->rows;
}
return $this->data;
}
?>
结果是这样的

Array
(
[0] => Array
(
[0] => 1
[userid] => 1
[1] => 2005054dsf
[info] => 2005054dsf
)

[1] => Array
(
[0] => 1
[userid] => 1
[1] => fdsfewfdsfds
[info] => fdsfewfdsfds
)

[2] => Array
(
[0] => 1
[userid] => 1
[1] => gdsgergergrtre
[info] => gdsgergergrtre
)

[3] => Array
(
[0] => 3
[userid] => 3
[1] => fgbdfvbcbfdgr
[info] => fgbdfvbcbfdgr
)

[4] => Array
(
[0] => 3
[userid] => 3
[1] => 45r2343234were
[info] => 45r2343234were
)

[5] => Array
(
[0] => 3
[userid] => 3
[1] => wfyhtyjtyjyjy
[info] => wfyhtyjtyjyjy
)

)
Array
(
[0] => Array
(
[0] => 1
[userid] => 1
[1] => 2005054dsf
[info] => 2005054dsf
)

[1] => Array
(
[0] => 1
[userid] => 1
[1] => fdsfewfdsfds
[info] => fdsfewfdsfds
)

[2] => Array
(
[0] => 1
[userid] => 1
[1] => gdsgergergrtre
[info] => gdsgergergrtre
)

[3] => Array
(
[0] => 3
[userid] => 3
[1] => fgbdfvbcbfdgr
[info] => fgbdfvbcbfdgr
)

[4] => Array
(
[0] => 3
[userid] => 3
[1] => 45r2343234were
[info] => 45r2343234were
)

[5] => Array
(
[0] => 3
[userid] => 3
[1] => wfyhtyjtyjyjy
[info] => wfyhtyjtyjyjy
)

[6] => Array
(
[0] => aa
[name] => aa
[1] => yillo
[tt] => yillo
)

[7] => Array
(
[0] => bb
[name] => bb
[1] => red
[tt] => red
)

[8] => Array
(
[0] => cc
[name] => cc
[1] => blue
[tt] => blue
)

[9] => Array
(
[0] => dd
[name] => dd
[1] => black
[tt] => black
)

[10] => Array
(
[0] => ee
[name] => ee
[1] => write
[tt] => write
)

)

后面一个输出明显多了6条循环,是前一个结果集转换的遗留,
怎么清除??怎么解决
...全文
203 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序猿之殇 2008-11-24
  • 打赏
  • 举报
回复

function fetch_array($query)
{
$this->data = array();
mysql_data_seek($query,0);
while($this->rows=mysql_fetch_array($query)){
$this->data[]=$this->rows;
}
return $this->data;
}
十三月二十一 2008-11-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jakey9826 的回复:]
$query1=$DB->query($sql1);
$query2=$DB->query($sql2);
$info_data=$DB->fetch_array($query1);
$user_data=$DB->fetch_array($query2);

明显是你的数据库有问题,这两个查询根本不相关,呵呵.从你的类里面下手.

[/Quote]

数据库是没问题,我想问题是出在类函数里
function fetch_array($query){
mysql_data_seek($query,0);
while($this->rows=mysql_fetch_array($query)){
$this->data[]=$this->rows;
}
return $this->data;
}
怎样转换结果集时从0开始,而不是从上一个数组的结束出继续
剑心永远OK 2008-11-23
  • 打赏
  • 举报
回复
需要重新定义这个数组就行了..


function fetch_array($query){
mysql_data_seek($query,0);
$this->data = array();
while($this->rows=mysql_fetch_array($query)){
$this->data[]=$this->rows;
}
return $this->data;
}

程序猿之殇 2008-11-23
  • 打赏
  • 举报
回复
$query1=$DB->query($sql1);
$query2=$DB->query($sql2);
$info_data=$DB->fetch_array($query1);
$user_data=$DB->fetch_array($query2);

明显是你的数据库有问题,这两个查询根本不相关,呵呵.从你的类里面下手.

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧