我正在尝试从订单表中获取订单数据及其ID号,并仅显示表中不为空的字段。在此之上,我想显示从用户表中提取的订单的联系方式,其中包含从订单表中获取的用户名。
我考虑在查询中使用JOIN,但是对于如何在表格中仅显示订单表单的非空字段以及上面的用户的联系人详细信息作为简单文本在第一行中显示而感到困惑。
最后我想出了下面的代码
if(isset($_POST['subsorder']))
{
include('../conn.php');
$ordt="";
if($sql=$orderdb->query("SELECT * FROM orders WHERE id='$_POST[sorder]'") or die($orderdb->error))
{
if($sql->num_rows!=0)
{
$info=$sql->fetch_assoc();
$un=$info['username'];
$h = "";
$d="";
while($row = $sql->fetch_array())
{
foreach($row as $key => $value)
{
if($key != 'id' && !is_numeric($key) && $value != 0)
{
$h.= "<th>$key</th>";
$d.= "<td>$value</td>";
}
}
}
}
if($sql2=$usersdb->query("SELECT * FROM users WHERE username='$un'") or die($usersdb->error))
$info2=$sql2->fetch_assoc();
echo $info2['firstname']." ".$info2['firstname']."<br>";
echo $info2['address1']."<br>".$info2['address2']."<br>".$info2['address2']."<br>";
echo $info2['phone']."<br>".$info2['email']."<br>";
echo "<table border='1' style='border-collapse:collapse'>
<tr>$h</tr>
<tr>$d</tr>
</table>";
}
}
但这会造成问题。这仅回显了从 info2 结果集派生的联系人详细信息。不是从 $ row 结果集派生的下表。但是如果我从代码中删除开头的 info 结果集,那么就会显示表格!但我必须拥有 info 结果集,因为它会提取用户名以供下次查询使用。
我想知道在一个查询上是否有两个获取函数是问题所在。或者我不知道我是否做了一些疏忽或基本上这种用法是否错误。