我遇到的问题是 "category"
选项没有结果。我尝试使用两个 while
但这也不起作用。
这是我的 php:
try{
$sel=$pdo->prepare("Select * from
actors inner join cat
on actors.id=cat.id");
$sel->bindColumn(1,$actors_id);
$sel->bindColumn(2,$actors);
$sel->bindColumn(3,$cat_id);
$sel->bindColumn(4,$cat);
$sel->execute();
}catch(PDOException $e){
die("error: " . $e->getMessage());
}
这是我的 html:
<form action="" method="post">
<label for="author">Author</label>
<Select id="author">
//Show data from php file:
<?php while($sel->fetch()):?>
<?php echo "<option value='$actors_id'>$actors</option>";?>
<?php endwhile; ?>
</Select>
<label for="category">Category</label>
<Select id="category">
//Show data again from php file:
<?php while($sel->fetch()):?>
<?php echo "<option value='$cat_id'>$cat</option>";?>
<?php endwhile; ?>
</Select>
</form>
这是它的样子:
如您所见,“类别”选项中没有显示任何信息。
如果我将 html 更改为这样的内容,它也不起作用:
<Select id="author">
<?php while($sel->fetch()):?>
<?php echo "<option value='$actors_id'>$actors</option>";?>
</Select>
<label for="category">Category</label>
<Select id="category">
<?php echo "<option value='$cat_id'>$cat</option>";?>
<?php endwhile; ?>
</Select>
现在看起来像这样:
你有什么建议吗?
最佳答案
您的第一个 while
循环从 PDOStatement 对象中获取所有行,因此当您第二次调用 while ($sel->fetch())
时,它会立即返回错误
。如果您想在两个独立的循环中使用结果,首先将所有行提取到一个行数组中,然后循环遍历该数组。使用 fetchAll()
而不是通过 bindColumn()
绑定(bind)到变量。
事实上,我几乎总是建议首先获取,而不是在显示逻辑期间获取,除非是非常大的行集,在这些行集中一次获取所有内容所消耗的内存会对您的系统造成负担。
// Get all the rows as an array
$rows = $sel->fetchAll(PDO::FETCH_ASOC);
// Later loop for the items you need as many times as you need
// Each new foreach will iterate the entire $rows array from start to end
<?php foreach ($rows as $row): ?>
<?php echo "<option value='{$row['actors_id']}'>" . htmlspecialchars($row['actors']) . "</option>";?>
<?php endforeach; ?>
<?php foreach ($rows as $row): ?>
<?php echo "<option value='{$row['cat_id']}'>" . htmlspecialchars($row['cat']) . "</option>";?>
<?php endforeach; ?>
不要忘记在输出上调用 htmlspecialchars()
,以确保它针对 HTML 正确编码。我没有在 cat_id,actors_id
上这样做,假设它们是已知的整数,但如果不是,那么你应该使用 htmlspecialchars($row['cat_id'], ENT_QUOTES)
以确保正确引用 HTML 属性。
关于php - 我怎样才能用 html 和 php 安排我的表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27712280/