Php 如何在单个while循环中从多个查询中检索值?

Php 如何在单个while循环中从多个查询中检索值?,php,mysql,Php,Mysql,在给定的代码中,我需要打印从查询$q1获得的列车名称,但在我提供的echo语句中,这不起作用。如何在给定代码中打印列车名 $q1="SELECT st_name FROM tbl_station where st_code='$f'"; $r1=mysql_query($q1); while($row = mysql_fetch_array($r1)) { $trainname=$r1['st_name']; } $query="SELECT A.train_no AS AA

在给定的代码中,我需要打印从查询
$q1
获得的列车名称,但在我提供的echo语句中,这不起作用。如何在给定代码中打印列车名

$q1="SELECT st_name FROM tbl_station where st_code='$f'";

$r1=mysql_query($q1);

while($row = mysql_fetch_array($r1)) 

{

$trainname=$r1['st_name'];

}   

$query="SELECT A.train_no AS AA, A.station_id AS AB, A.arrival AS AC, A.dept AS AD, 

B.station_id AS AE, B.arrival AS AF, B.dept AS AG FROM TIME AS A,TIME AS B WHERE A.train_no 

= B.train_no AND A.station_id ='$f' AND B.station_id ='$t'";

$rs=mysql_query($query);

while($row = mysql_fetch_array($rs)) 

{

echo "<tr><td>".$row['AA']."</td> <td>".$trainname."</td> <td>" .$row['AC'] ."</td> 

<td>".$row['AD'] . "</td><td>".$row['AE'] . "</td><td>".$row['AF'] . "</td><td>" 

.$row['AG']. "</td><td>"."<a href='Reservation.php'>Click Me</a><tr><td>";

}
$q1=“从tbl_站选择st_名称,其中st_代码='$f';
$r1=mysql\U查询($q1);
而($row=mysql\u fetch\u数组($r1))
{
$trainname=$r1['st_name'];
}   
$query=“选择A.列车号为AA,A.车站id为AB,A.到达为AC,A.部门为AD,
B.车站id作为AE,B.到达作为AF,B.部门作为AG从时间作为A,时间作为B,其中A.列车号
=B.列车号和A.车站号='f'和B.车站号='t';
$rs=mysql\u查询($query);
while($row=mysql\u fetch\u数组($rs))
{
回显“$row['AA']”.“$trainname.”.“$row['AC']”
“$row['AD'..”.$row['AE'..”.$row['AF'..”
.$row['AG']。“”;
}

您正在从结果对象检索数据,而应该从变量行获取数据

while($row = mysql_fetch_array($r1))

    {

    $trainname=$row['st_name'];

    }

结果行分配给
$row
变量,而不是
$r1
变量(即查询资源):

有两个问题:

  • mysql_fetch_数组提供需要数字索引的结果(这适用于两个循环)
    • 修复程序是
      $row=mysql\u fetch\u数组($r1,mysql\u ASSOC)
      $row=mysql\u fetch\u ASSOC($r1)
  • 您使用的是结果而不是行。(这适用于第一个循环)
    • $trainname=$row['st_name']

但是你有明显的安全漏洞,所以你应该研究mysqli或pdo“代码不工作”是什么意思?我的意思是trainname没有在second while循环中打印..有没有办法在second while循环中打印trainname?顺便说一下,这个代码不安全,您应该研究mysqli或pdo作为替代。有没有办法在第二个while循环中打印trainname?您已经这样做了。只是最初您错误地为
$trainname
变量赋值;一旦您实现了上述功能,它就会起作用。
mysql\u fetch\u array
在不指定第二个参数的情况下,以数字和关联数组的形式返回行:
array mysql\u fetch\u array(resource$result[,int$result\u type=mysql\u both])
while($row = mysql_fetch_array($r1)) 
{  
  $trainname=$row['st_name'];   
}