循环传值,读数据库!!!为什么????只接到一值!!!!

shuiaaa 2003-08-13 04:20:13
if(!isset($db_link))
{
require "./db.php";
}

$id=4;
chanp_z($id);
function chanp_z($id)
{
global $Table,$db_link,$Bt;
$sql="select * from $Table[zt] where zhuiid='$id'";
$result=$db_link->query($sql);$i=0;
while($row=$db_link->fetch_array($result))
{
echo $row[id]."<br>";//值分别是11,12,13
chanp_z_mess($row[id]);//传值该是chanp_z_mess(11),chanp_z_mess(12),chanp_z_mess(13)
}

}

function chanp_z_mess($id)
{
global $Table,$db_link,$Bt;
$sql="select * from $Table[index] where fenid='$id'";
$result=$db_link->query($sql);
while($row=$db_link->fetch_array($result))
{
echo $row[id];
echo $row[messgbt];//读出应该是三条数据
echo "<hr>";
}

}
//结果只接收到了11,读出的数据也是11信息!!
有办法解决吗?????????????
...全文
112 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hcfyxy 2003-08-18
  • 打赏
  • 举报
回复
说对了,是类的问题,我也曾遇到过,我是用递归时候发生的问题
xuzuning 2003-08-18
  • 打赏
  • 举报
回复
你在数据库操作中使用了类
各函数中使用的是同一个该类的实例
通常书写类的时候是不考虑多个查询的,所以后面的查询会覆盖掉前面的查询

当把$db_link->query($sql);直接用数据库函数书写时
mysql_query($sql);
就不会出现你说的现象
xuzuning 2003-08-18
  • 打赏
  • 举报
回复
你在数据库操作中使用了类
各函数中使用的是同一个该类的实例
通常书写类的时候是不考虑多个查询的,所以后面的查询会覆盖掉前面的查询

当把$db_link->query($sql);直接用数据库函数书写时
mysql_query($sql);
就不会出现你说的现象
shuiaaa 2003-08-15
  • 打赏
  • 举报
回复
板主如果看到,帮忙拿出来讨论一下PHP迭归
为什么学出现,这样
shuiaaa 2003-08-15
  • 打赏
  • 举报
回复
板主如果看到,帮忙拿出来讨论一下PHP迭归
为什么学出现,这样
shuiaaa 2003-08-15
  • 打赏
  • 举报
回复
ustb(偶然)说的很对,迭归
我也在想为什么不行,没有道理!!!!
用for循环,可以迭归,while也可以迭归,
为什么从数据库读出就不行呢????
__________________________________
板主如果看到,帮忙拿出来讨论一下PHP迭归
为什么学出现,这样的怪现象!!!!!
_________________对初学者,和高手都有帮助!!!!
shuiaaa 2003-08-14
  • 打赏
  • 举报
回复
看来PHP高手都睡觉了!!!!
还是没有解决!!!!
我看只有手工写id值 了!!
代码是没有问提的!!
function chanp_z($id)
{
global $Table,$db_link,$Bt;
$sql="select * from $Table[zt] where zhuiid='$id'";
$result=$db_link->query($sql);$i=0;
while($row=$db_link->fetch_array($result))
{
echo $row[id]."<br>";//值分别是11,12,13(这里是举列子值假设为11,12,13)这个值会随chanp_z($id)里$id变化,所返回不同的值。
chanp_z_mess($row[id]);//传值该是chanp_z_mess(11),chanp_z_mess(12),chanp_z_mess(13)
//这里也随之改变,传给chanp_z_mess(这里也改变的)
}

}
只可把chanp_z_mess($row[id])注释掉!!想要的id值都正确的显出来!!!
如打开,想要id 值,只能显一个!!没有用的!!
babystudio 2003-08-14
  • 打赏
  • 举报
回复
首先确定
select * from $Table[zt] where zhuiid='4'
确实返回了三条记录

另外$row[id]这样的写法可以通过吗?会不会使这里出现异常造成后面的处理混乱?把类似的语句改成规范写法,索引用引号界定,即$row['id']
shuiaaa 2003-08-14
  • 打赏
  • 举报
回复
主啊!!!!
不要答非所问吧!!!!
$id=4;//假设值为4,这里由传值而定!!

function chanp_z($id)
{
global $Table,$db_link,$Bt;
$sql="select * from $Table[zt] where zhuiid='$id'";
$result=$db_link->query($sql);$i=0;
while($row=$db_link->fetch_array($result))
{
echo $row[id]."<br>";//值分别是11,12,13(这里是举列子值假设为11,12,13)这个值会随chanp_z($id)里$id变化,所返回不同的值。
chanp_z_mess($row[id]);//传值该是chanp_z_mess(11),chanp_z_mess(12),chanp_z_mess(13)
//这里也随之改变,传给chanp_z_mess(这里也改变的)
}

}

function chanp_z_mess($id)//__接收到就上面chanp_z_mess($row[id])传来的值,上面变了,这里也就变了
{
global $Table,$db_link,$Bt;
$sql="select * from $Table[index] where fenid='$id'";
$result=$db_link->query($sql);
while($row=$db_link->fetch_array($result))
{
echo $row[id];
echo $row[messgbt];//读出应该是三条数据,当我这里的值,也会改变!!!
echo "<hr>";
}

}
//_______能明白吧!!!如果手工给chanp_z_mess($id)里的id值,数据库里有上千万个id,那不要累死
//_高手在吗?????????????
for($i=0;$i<5;$i++)
{
chanp_z_mess($id);//这样就可以把值,传出来5个值,
}
//__________有办法解决吗???,难到要手工写值,真不想!!
ustb 2003-08-14
  • 打赏
  • 举报
回复
真奇怪,为什么不用递归来写呢?
两段代码90%是相同的。
shuiaaa 2003-08-14
  • 打赏
  • 举报
回复
$id=4;
chanp_z($id);
function chanp_z($id)
{
global $Table,$db_link,$Bt;
$sql="select * from $Table[zt] where zhuiid='$id'";
$result=$db_link->query($sql);$i=0;
while($row=$db_link->fetch_array($result))
{
echo $row[id]."<br>";//值分别是11,12,13
chanp_z_mess($row[id]);//传值该是chanp_z_mess(11),chanp_z_mess(12),chanp_z_mess(13)
}

}

function chanp_z_mess($id1)//改了
{
global $Table,$db_link,$Bt;
$sql="select * from $Table[index] where fenid='$id1'";//改了
$result=$db_link->query($sql);
while($row=$db_link->fetch_array($result))
{
echo $row[id];
echo $row[messgbt];//读出应该是三条数据
echo "<hr>";
}

}
//结果只接收到了11,读出的数据也是11信息!!
问题依然存在,结果只接收到了11,读出的数据也是11信息
好闷啊!!
xizi2002 2003-08-14
  • 打赏
  • 举报
回复
这个函数里面的变量换换名试一下;
function chanp_z_mess($id)
{
global $Table,$db_link,$Bt;
$sql1="select * from $Table[index] where fenid='$id'";
$result1=$db_link->query($sql1);
while($row1=$db_link->fetch_array($result1))
{
echo $row1['id'];
echo $row1['messgbt'];//读出应该是三条数据
echo "<hr>";
}

}
cnpr 2003-08-13
  • 打赏
  • 举报
回复
http://www.eaoo.com/design/list.asp?classid=2&Nclassid=9
bluemeteor 2003-08-13
  • 打赏
  • 举报
回复
echo $row[id]."<br>";//值分别是11,12,13

这个输出了几个ID值?

你最好不要在两个函数里面都使用$sql和$result相同的变量名

21,886

社区成员

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

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