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中的所有记录,但我改成这种写法时,就出现了总是),什么原因呢?
展开
 我来答
jiangxibaiyi
2012-04-22 · 跟随风去旅行-伤心的歌
jiangxibaiyi
采纳数:3973 获赞数:14412

向TA提问 私信TA
展开全部
缘分啊,我也碰到了和你一模一样的问题!
原来输出多条记录,我也是用的面向过程
现在我封装到类后,不但输出的是同一条数据,而且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];

}

输出结果,成功!!!
我的加
你的加
windblast
2012-04-22 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13622
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部
仔细看了下你的代码,我觉得可能问题出现在
  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'];
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式