【问题标题】:Pulling data from database and into an html table从数据库中提取数据并放入 html 表
【发布时间】:2019-06-06 17:29:37
【问题描述】:

我正在从数据库中提取数据,但只将第一行放入动态生成的 html 表中。

我尝试添加另一个 foreach 循环,但这不是答案……我没有想法……

$conn = new PDO('mysql:host=localhost;dbname=jeuxvideo', $dbUserName, $dbPassword);
$sql = "SELECT * FROM jeuxvideo";
$result = $conn->prepare($sql);
$request = $result->execute();

echo "<table border='1'>";
echo "<tr><td>Id</td><td>Titre</td><td>Prix<td>Date de Sortie</td><td>Genre</td><td>Origine</td><td>Mode</td><td>Connexion</td></tr>\n";
$row = $result->fetch(PDO::FETCH_ASSOC);

echo "<tr>";
foreach ($row as $key => $value) {
echo "<td>$value</td>";
}
echo "</tr>";
echo "</table>";

此代码提取所有正确信息并将其放在 html 表中的正确位置,但由于某种原因它没有收集以下行数据...

【问题讨论】:

  • 使用 fetchAll 并将您的 &lt;tr&gt;...&lt;/tr&gt; 放入您的 foreach
  • 感谢@waterloomatt,关闭但没有雪茄。第二行现在被拉出,但都显示为一个数组,而不是表中的单独列。有什么想法吗?
  • 错误消息:注意:第 23 行 C:\laragon\www\CRUD\treatment.php 中的数组到字符串转换
  • 删除PDO::FETCH_ASSOC
  • 这个查询有多少列? SQL 中的最佳实践:通过使用 SELECT 中的命名列来避免 *

标签: php sql database


【解决方案1】:

这一行只取一行:

$row = $result->fetch(PDO::FETCH_ASSOC);

您需要获取尽可能多的行。一旦没有更多行可获取,该函数将返回 FALSE,因此您可以使用 while 循环,如下所示:

while($row = $result->fetch(PDO::FETCH_ASSOC)) {
    echo "<tr>";
    foreach ($row as $key => $value) {
        echo "<td>$value</td>";
    }
    echo "</tr>";
}
echo "</table>";

【讨论】:

  • 两个循环似乎过分了。
【解决方案2】:

由于您不需要为查询准备任何变量,您可以简单地执行以下操作:

<?php
$stmt = $pdo->query('SELECT * FROM jeuxvideo');

echo '<table>';

foreach ($stmt as $row) {
    echo '<tr>';

    echo "<td>$row['name']</td>";
    echo "<td>$row['url']</td>";
    echo "<td>$row['timestamp']</td>";

    echo '</tr>';
}

echo '</table>';

第二种方法是:

<?php
$stmt = $pdo->query('SELECT * FROM jeuxvideo');

echo '<table>';

while ($row = $stmt->fetch()) {
    echo '<tr>';

    echo "<td>$row['name']</td>";
    echo "<td>$row['url']</td>";
    echo "<td>$row['timestamp']</td>";

    echo '</tr>';
}

echo '</table>';

【讨论】:

    【解决方案3】:

    试试这个

     $conn = new PDO('mysql:host=localhost;dbname=jeuxvideo', $dbUserName, $dbPassword);
    $sql = "SELECT * FROM jeuxvideo";
    $result = $conn->prepare($sql);
    $request = $result->execute();
    
    echo "<table border='1'>";
    echo "<tr><td>Id</td><td>Titre</td><td>Prix<td>Date de Sortie</td><td>Genre</td><td>Origine</td><td>Mode</td><td>Connexion</td></tr>\n";
    
    $row = $request->fetch_all();
    
    echo "<tr>";
    foreach ($row as $key => $value) {
    echo "<td>$value</td>";
    }
    echo "</tr>";
    echo "</table>";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 2013-10-10
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多