我为我正在从事的一个项目设计了一个授权系统。我能够从数据库中检索用户 ID,但是,我现在正在尝试获取该用户的用户名和电子邮件。 顺便说一句,我对 PHP 还很陌生。
我收到此错误:
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
我很困惑,因为
$stmt->execute()
但是工作得很好
$stmt2->execute()
失败了。我确信问题很简单,但我无法弄清楚。这是用于获取信息的 PHP 代码。
$stmt = $dbh->prepare("SELECT nuewavedb_user_id, nuewavedb_username, nuewavedb_password FROM nuewavedb_users
WHERE nuewavedb_username = :nuewavedb_username AND nuewavedb_password = :nuewavedb_password");
$stmt2 = $dbh->prepare("SELECT nuewavedb_fullname, nuewavedb_email FROM nuewavedb_users
WHERE nuewavedb_username = :nuewavedb_username AND nuewavedb_password = :nuewavedb_password");
/*** bind the parameters ***/
$stmt->bindParam(':nuewavedb_username', $nuewavedb_username, PDO::PARAM_STR);
$stmt->bindParam(':nuewavedb_password', $nuewavedb_password, PDO::PARAM_STR, 40);
$stmt2->bindParam(':nuewavedb_fullname', $nuewavedb_fullname, PDO::PARAM_STR);
$stmt2->bindParam(':nuewavedb_email', $nuewavedb_email, PDO::PARAM_STR);
/*** execute the prepared statement ***/
$stmt->execute();
$stmt2->execute();
/*** check for a result ***/
$user_id = $stmt->fetchColumn();
$nuewavedb_fullname = $stmt2->fetchColumn();
$nuewavedb_email = $stmt2->fetchColumn(1);
预先感谢您的帮助!
最佳答案
您应该以某种方式组合此查询,特别是如果它是同一个表,则无需读取两次
$stmt = $dbh->prepare("SELECT
nuewavedb_user_id
,nuewavedb_username
,nuewavedb_password
,nuewavedb_fullname
,nuewavedb_email
FROM nuewavedb_users
WHERE nuewavedb_username = :nuewavedb_username AND
nuewavedb_password = :nuewavedb_password"
);
然后正确执行并获取:
/*** bind the parameters ***/
$stmt->bindParam(':nuewavedb_username', $nuewavedb_username, PDO::PARAM_STR);
$stmt->bindParam(':nuewavedb_password', $nuewavedb_password, PDO::PARAM_STR, 40);
/*** execute the prepared statement ***/
$stmt->execute();
/*** fetch **/
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$nuewavedb_fullname = $row['nuewavedb_fullname'];
$nuewavedb_email = $row['nuewavedb_email'];
关于php - 使用 PDO 从 MySQL 获取用户信息时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24636580/