gpt4 book ai didi

php - 从等于行名的表中选择 id

转载 作者:行者123 更新时间:2023-11-28 23:17:14 25 4
gpt4 key购买 nike

我试图将从 $_SESSION 获得的用户名的 ID 存储到一个变量,但我无法使 SQL 语句工作。用户名存储在名为用户的数据库中,并以 ID 作为主键。有人可以告诉我如何纠正这个问题吗?谢谢

$name = $_SESSION['username']; //get username of user currently logged in

$rid = $db->exec("SELECT id FROM users WHERE username = '$name'");

最佳答案

来自 PDO::exec() 的 PHP 文档:

PDO::exec() does not return results from a SELECT statement. For a SELECT statement that you only need to issue once during your program, consider issuing PDO::query(). For a statement that you need to issue multiple times, prepare a PDOStatement object with PDO::prepare() and issue the statement with PDOStatement::execute().

这意味着您不能在 SELECT 查询上使用 exec() - 相反,您必须使用 query()prepare() .对于使用变量或用户输入的任何查询,请在变量查询中使用 prepare() 和占位符,以保护您的数据库免受SQL 注入(inject)

$stmt = $db->prepare("SELECT id FROM users WHERE username = :name");
$stmt->execute(["name" => $name]);
if ($row = $stmt->fetch()) {
// $row holds the id
} else {
// No rows were returned at all! No matches for $name
}

现在,如果查询返回任何结果,$row 会保存 id。根据您的获取类型,它可能是 $row['id']$row[0]$row->id或这些的组合。

如果你期望不止一个结果,你需要循环while ($row = $stmt->fetch()),或者使用$stmt->fetchAll();

关于php - 从等于行名的表中选择 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43333786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com