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

时间:2017-03-09 16:40:24

标签: 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);
   $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错误。我不知道我做错了什么因为我是首发 请让我知道我做错了什么,以及如何解决这个问题。

更新代码

<?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($stmt); 
} catch ($row = $result->fetch() { 

?> 

<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 } $stmt->close(); ?>

2 个答案:

答案 0 :(得分:0)

答案如下:

<?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%工作。一位朋友帮助了我。

答案 1 :(得分:-1)

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

  • try() {} while() {}无效。

这是结合do {} while()try {} catch() {}的语法。这将导致500内部服务器错误。

其次,根据注释,您需要标准化一个数据库连接器。我可能会选择PDO

http://php.net/manual/en/intro.pdo.php

修改

以下是使用PDO

的预准备语句的示例
<?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
}