我正在尝试显示连接到同一表的名称。
有3种不同的数据库表:
首先,我从“表格”中获取数据以获取表格ID。
比起从“信息”表中获得的数据来确定哪些访客已连接到表ID,所以我获得了其ID(可以是多个ID)。
最后,我通过ID获得了每个客人的名字。
我的问题是,我只能获得期望的最终名称,而不能获得连接到同一表的所有名称。
最后一个结果需要显示每个表以及连接到表的每个名称。
PHP:
$sql_e1 = "SELECT `tid` FROM `table`";
$result_e1 = $con->query($sql_e1);
if ($result_e1->num_rows > 0) {
$i = 0;
while($row0 = $result_e1->fetch_assoc()) {
$table_id = $row0['tid'];
$array[$i]['table_id'] = $table_id;
$sql_e2 = "SELECT `id` FROM `info` WHERE `tid`='".$table_id."'";
$result_e2 = $con->query($sql_e2);
if ($result_e2->num_rows > 0) {
while($row2 = $result_e2->fetch_assoc()) {
$guest_id = $row2['id'];
$array[$i]['guest_id'] = $guest_id;
$sql_e3 = "SELECT `name` FROM `guests` WHERE `id`='".$guest_id."'";
$result_e3 = $con->query($sql_e3);
if ($result_e3->num_rows > 0) {
while($row3 = $result_e3->fetch_assoc()) {
$array[$i]['name'] = $row3['name'];
}
}
}
}
$i++;
}
}
$counter = 0;
HTML:
<?
if (isset($i)) {
while ($counter < $i) {
include 'infodialog.php';
?>
<div class="<? echo $array[$counter]['table_id']; ?>">
<p><? echo $array[$counter]['name']; ?></p>
</div>
<?
$counter++;
} } ?>
答案 0 :(得分:1)
如果要在数组中获得多个名称,则代码应为:
/*
Consider I am getting uploaded files using AJAX
but thoses files can be reached using $_FILES['file'].
*/
$ssh2 = ssh2_connect("xxxxxx");
if(ssh2_auth_password($ssh2, 'root', 'xxxxx')) {
$ftp = ssh2_sftp($ssh2);
$f = fopen("ssh2.sftp://".intval($ftp)."/ftp/images/img.png", 'w');
/*
I wonder if it's possible to write directly the content of the
file inside $f ? Actually, I am uploading PICTURES. Any Idea ?
*/
}
或者应根据客人的身份证号码
$array[$i]['name'][] = $row3['name'];
这将获得所有名称,但您必须根据数组更改HTML代码。
答案 1 :(得分:0)
除Rohit Rasela之外,另一个解决方案是使用JOINS。从长远来看,JOINS将是更好的解决方案,尤其是当您开始添加大量数据并且速度很重要时。自从我完成PHP和MySQL以来已经有一段时间了,我还没有测试过,但是我相信它应该可以工作:
MySQL:
SELECT
guests.name as GuestName,
table.tid as TableId,
info.id as InfoId
FROM table AS table
JOIN info AS info ON info.tid = table.tid
JOIN guests AS guests ON guests .id = info.[guest_id_column_name]
这将为遍历每个表时找到的每个匹配项返回一行,您将可以遍历并访问每个匹配项的GuestName,TableId和InfoId。如果您不关心表ID,可以将其保留在SELECT列表中。如果订单很重要,您可以添加 ORDER BY 。
HTML循环:
while ($row = $result->fetch_assoc()) {
<div>Guest name: <php echo $row['GuestName']; ?></div>
<div>Table Id: <php echo $row['TableId']; ?></div>
<div>Info Id: <php echo $row['InfoId']; ?></div>
}
上获得有关JOIN的更多信息。