gpt4 book ai didi

php - 此 PDO 语句返回一个整数而不是字符串

转载 作者:行者123 更新时间:2023-11-29 13:53:48 24 4
gpt4 key购买 nike

在类里面,我有一些 PDO:

$userFName = 'userFName';
include('dbconnect.php'); // Normally I'd store the db connect script outside of webroot
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name;", $db_user, $db_password);
$stmt = $pdo->prepare('SELECT userFName FROM Users WHERE username = :uname AND password = :pword AND roleID = 1');
$stmt->bindParam(':uname', $this->user->username);
$stmt->bindParam(':pword', $this->user->password);
$stmt->bindColumn(4, $userFName, PDO::PARAM_STR);
$stmt->execute();
$familiar = $stmt->fetch(PDO::FETCH_BOUND);
$this->user->firstName = $familiar;

它返回第一列中的 ID,而不是第四列中的 VARCHAR 内容。知道为什么吗?

最佳答案

当将 PDO::FETCH_BOUNDfetch() 结合使用时,该方法将不会返回结果记录。相反,列的值应该在您之前使用 $stmt->bindColumn() 绑定(bind)的变量中可用。

因此将您的代码更改为:

$stmt->bindColumn(1, $userFName, PDO::PARAM_STR);
$stmt->execute();
$stmt->fetch(PDO::FETCH_BOUND);
$this->user->firstName = $userFName; // <-- use the bound variable
<小时/>

但是您不需要 bindColumn() 调用。您可以将代码简化为:

$stmt->execute();
$row = $stmt->fetch(); // uses PDO::FETCH_ASSOC by default
$this->user->firstName = $row['FName'];

关于php - 此 PDO 语句返回一个整数而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226312/

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