php中用类封闭mysql语句的相关问题?
classDB{private$sql;functionquery($r){$this->sql=$r;returnmysql_query($this->sql);}fu...
class DB{
private $sql;
function query($r){$this->sql=$r; return mysql_query($this->sql);}
function fetch($r){return mysql_fetch_assoc($this->query($r);}
在另一个php文件中使用
$p=new DB();
$sql="select * from a";
while($row=$p->fetch($sql))
{
echo $row['title'];
}
数据库中有多条记录,输出来的确是最后一条记录,而且重复了很多条。(我原来是用面过程写的,可以循环出title中的所有记录,但我改成这种写法时,就出现了总是),什么原因呢? 展开
private $sql;
function query($r){$this->sql=$r; return mysql_query($this->sql);}
function fetch($r){return mysql_fetch_assoc($this->query($r);}
在另一个php文件中使用
$p=new DB();
$sql="select * from a";
while($row=$p->fetch($sql))
{
echo $row['title'];
}
数据库中有多条记录,输出来的确是最后一条记录,而且重复了很多条。(我原来是用面过程写的,可以循环出title中的所有记录,但我改成这种写法时,就出现了总是),什么原因呢? 展开
2个回答
展开全部
缘分啊,我也碰到了和你一模一样的问题!
原来输出多条记录,我也是用的面向过程
现在我封装到类后,不但输出的是同一条数据,而且while还造成了死循环!
研究了半天都不行!
期待中。。。。。。
----
我找到原因了,原因是你在while里面的循环条件,调用了类,这样类里的mysql_query循环一次就执行一次,这样就不行了!
要在类里面写2个方法,在while循环之前,先执行类里的mysql_query(这样就保证了sql语句只执行了一次)然后在while循环,就可以了!
附上我的代码:
function all_query($sql=''){//先执行sql语句
$re=@mysql_query($sql,$this->conn);
if(!$re){
echo '数据集返回错误';
}else{
return $re;
}}
function for_query($data=''){//再返回数组
return mysql_fetch_assoc($data);
}
上面是类里的代码
$sql=$date->all_query("select * from websehzhi limit $pageqd,$pagesize");//先执行mysql_query
while($rs=$date->for_query($sql)){//再循环
echo $rs[webname];
}
输出结果,成功!!!
我的加
你的加
原来输出多条记录,我也是用的面向过程
现在我封装到类后,不但输出的是同一条数据,而且while还造成了死循环!
研究了半天都不行!
期待中。。。。。。
----
我找到原因了,原因是你在while里面的循环条件,调用了类,这样类里的mysql_query循环一次就执行一次,这样就不行了!
要在类里面写2个方法,在while循环之前,先执行类里的mysql_query(这样就保证了sql语句只执行了一次)然后在while循环,就可以了!
附上我的代码:
function all_query($sql=''){//先执行sql语句
$re=@mysql_query($sql,$this->conn);
if(!$re){
echo '数据集返回错误';
}else{
return $re;
}}
function for_query($data=''){//再返回数组
return mysql_fetch_assoc($data);
}
上面是类里的代码
$sql=$date->all_query("select * from websehzhi limit $pageqd,$pagesize");//先执行mysql_query
while($rs=$date->for_query($sql)){//再循环
echo $rs[webname];
}
输出结果,成功!!!
我的加
你的加
2012-04-22 · 知道合伙人软件行家
关注
展开全部
仔细看了下你的代码,我觉得可能问题出现在
while($row=$p->fetch($sql))
由于循环的条件是$row=$p->fetch($sql),而每次判断(执行)这个语句,都会执行$p->fetch($sql),那么$row就一直更新数据,数据的指针也总是在同一记录上。
试改写代码如下:
$p=new DB();
$sql="select * from a";
$rows = $p->fetch($sql);
for($i=0;$i<count(rows);$i++)
{
echo $row[$i]['title'];
}
while($row=$p->fetch($sql))
由于循环的条件是$row=$p->fetch($sql),而每次判断(执行)这个语句,都会执行$p->fetch($sql),那么$row就一直更新数据,数据的指针也总是在同一记录上。
试改写代码如下:
$p=new DB();
$sql="select * from a";
$rows = $p->fetch($sql);
for($i=0;$i<count(rows);$i++)
{
echo $row[$i]['title'];
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询