【发布时间】:2023-03-05 04:13:01
【问题描述】:
我编写了这段代码,它应该用用户已兑换的所有代金券及其价值制作一个表格,但它不起作用(根本没有出现,也没有显示任何错误)所以我很困惑我有什么这里做错了。有人可以帮忙吗?
$dsn = 'mysql:host=127.0.0.1;dbname=user_db;charset=utf8';
$conn = new PDO($dsn, $username1, $password);
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stm_voucher = $conn->prepare("SELECT id FROM users WHERE username = :username");
$stm_voucher->bindParam(":username", $username, PDO::PARAM_INT);
$stm_voucher->execute();
while ($row = $stm_voucher->fetch(PDO::FETCH_ASSOC)) {
$id = $row["id"];
$stm_voucher2 = $conn->prepare("SELECT * FROM vouchers WHERE used_by = :id");
$stm_voucher2->bindParam(":id", $id, PDO::PARAM_INT);
$stm_voucher2->execute();
$rank = 1;
while ($row2 = $stm_voucher2->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>
<td>{$rank}</td>
<td>{$row2['voucher']}</td>
<td>{$row2['value']}</td>
<td>{$row2['used_on']}</td>
</tr>";
$rank++;
}
}
【问题讨论】:
-
没有人可以帮忙。因为缺少数据库样本和输入值。
-
用户名真的是 int -
(":username", $username, PDO::PARAM_INT)? -
SELECT v.* FROM users AS u JOIN vouchers AS v ON u.id = v.used_by WHERE u.username = :username- 单个查询 -
当您有涉及数据库的问题时,您应该始终提供表定义。实际的
CREATEDML,不是截图。很多时候,人们会在提供答案之前重新创建您的表并实际运行代码。尽你所能为他们提供便利。