所以, 我刚刚开始使用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(); ?>
答案 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
}