php - 我怎样才能用 html 和 php 安排我的表格

标签 php html mysql pdo

我遇到的问题是 "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>

这是它的样子:

enter image description here

如您所见,“类别”选项中没有显示任何信息。

如果我将 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>

现在看起来像这样:

enter image description here

你有什么建议吗?

最佳答案

您的第一个 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/

相关文章:

mysql - 在其他条件行之后查找特定条件行

php - Nagios/MySQL 错误

php - 获取 MySQL 中 3 个类别的所有可能组合

html - 固定位置 div 的 CSS 溢出问题

php - 是否存在一个不错的 python wsgi 来本地管理 MYSQL 数据库?或者我必须自己编码一个?

javascript - 写在 contenteditable div 上?微距

html - 使用 c3 可视化图表

java - DotCMS Docker MySQL 500

php - 过滤 JavaScript 输出的 HTML

javascript - 如何通过单击按钮创建表单加载项?