Php 如何使用PDO显示所有数据库结果

Php 如何使用PDO显示所有数据库结果,php,mysql,pdo,echo,Php,Mysql,Pdo,Echo,所以, 我刚开始使用PDO,连接和东西都很好,但现在我有一个小问题。我被困在一个部分,我想显示每个表6个结果。我的代码如下: <?php $sql = "SELECT * FROM db WHERE id BETWEEN 1 AND 6"; $stmt->bindParam(':userName', $userName); $stmt->bindParam(':hours', $hours); try { $stmt = $conn->prepare($sql);

所以, 我刚开始使用PDO,连接和东西都很好,但现在我有一个小问题。我被困在一个部分,我想显示每个表6个结果。我的代码如下:

<?php
$sql = "SELECT * FROM db WHERE id BETWEEN 1 AND 6";
$stmt->bindParam(':userName', $userName);
$stmt->bindParam(':hours', $hours);
try {
   $stmt = $conn->prepare($sql);
   $result = $stmt->execute($parameters);
} while($row = $result->fetch_assoc()){ ?>
   <tr>
       <td><b><?php echo $row['hours'] ?></b></td>
       <td><a href="#"></a></td>
       <td id="dayhour-1">
           <input placeholder="Name" type="text" class="form-control" id="1" value="<?php echo $row['userName'] ?>">
       </td>
   </tr>
<?php  } $stmt->close(); ?>
数据库连接:

<?php
$db_host = "localhost";
$db_name = "xxx";
$db_user = "xxx";
$db_pass = "xxx";
$db_opts = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false
);
$conn    = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass, $db_opts);
?>
当我进入网页时,它显示了众所周知的500错误。我不知道我做错了什么,因为我是先发球员。 请让我知道我做错了什么,以及如何解决这个问题

更新代码


好的,我可以从这里看到一个错误:

在{}不起作用时尝试{}。 这是从do{}while和try{}catch{}组合语法。这将抛出一个500内部服务器错误

其次,根据评论,您需要在一个数据库连接器上进行标准化。我可能会和PDO一起去

编辑

下面是一个使用PDO的预处理语句的示例


答案如下:

<?php
                            $sql = "SELECT * FROM database WHERE id BETWEEN 1 AND 5";
                            $stmt = $conn->query($sql);
                            $stmt->execute();
                            while($row = $stmt->fetch(PDO::FETCH_OBJ)){
                            ?>
                                <tr>
                                    <td><b><?php echo $row->hours ?></b></td>
                                    <td><a href="#"></a></td>
                                    <td id="dayhour-1">
                                        <input type="text" class="form-control" id="1" value="<?php echo $row->username ?>">
                                    </td>
                                </tr>
                            <?php } ?>

这段代码将完成它的工作。它是完全完美的PDO,100%工作。一位朋友帮了我的忙。

你没有在值中包含绑定。你还混合了不同的mysql API,上帝只知道哪一个用于连接。查看服务器的错误日志总是有助于调试。错误信息就在那里。你的代码在太多的级别上失败了。嗯,我试过了hahah@Fred ii Well,@Spholt,我试过了以下方法,但不起作用:请不要只是说它不起作用。。。。请给出您收到的确切错误消息。想象一下,你处于一个支持者的位置,试图帮助一个只说这不起作用的人-@Willem Jelle我已经为您编写了代码,但看起来您仍然有一些基本的语法错误。我建议使用一个文本编辑器或带有过梁的IDE来突出这些问题。顺便说一句,如果我输入你的代码,我不会得到一个页面错误5**错误,但信息不会显示太多。感谢efford,非常感谢兄弟@spholthm,你试过在脚本顶部打开错误报告吗?ini设置“显示错误”,1;ini设置“显示启动错误”,1;错误报告e\u ALL;。这会让我们更好地了解正在发生的事情。很高兴听到你找到了解决方案!
<?php

// Connect to your database
$pdo = new PDO("mysql:host=localhost;dbname=my_database", "username", "password")
        ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Prepare your statement
$stmt = $pdo->prepare("SELECT * FROM db WHERE id BETWEEN ? AND ?");

// Execute the statement
$results = $stmt->execute([1,6])->fetchAll(PDO::FETCH_ASSOC);

// Loop through your resuls
foreach ($results as $row) {
    ?>
        <tr>
            <td><b><?php echo $row['hours'] ?></b></td>
            <td><a href="#"></a></td>
            <td id="dayhour-1">
                <input type="text" value="<?php echo $row['userName'] ?>">
            </td>
        </tr>
    <?php
}
<?php
                            $sql = "SELECT * FROM database WHERE id BETWEEN 1 AND 5";
                            $stmt = $conn->query($sql);
                            $stmt->execute();
                            while($row = $stmt->fetch(PDO::FETCH_OBJ)){
                            ?>
                                <tr>
                                    <td><b><?php echo $row->hours ?></b></td>
                                    <td><a href="#"></a></td>
                                    <td id="dayhour-1">
                                        <input type="text" class="form-control" id="1" value="<?php echo $row->username ?>">
                                    </td>
                                </tr>
                            <?php } ?>