【发布时间】:2022-01-22 17:47:47
【问题描述】:
我正在编写一个简单的程序,但卡在更新查询上。错误显示“Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of token”。下面是代码
class PDContr extends PDedit{
private $userFirstName;
private $userLastName;
public function __construct($userFirstName, $userLastName){
$this->userFirstName = $userFirstName;
$this->userLastName = $userLastName;
}
public function pdedit(){
if($this->emptyInput() == false){
header("location: ../personaldetail.php?error=emptyinput");
exit();
}
if($this->invaliduid() == false){
header("location: ../personaldetail.php?error=userFirstname");
exit();
}
$this->setUser($this->userFirstName, $this->userLastName);
}
下面是类扩展到我的数据库。难道是我没有定义user_ID,所以无法执行更新查询?
class PDedit extends Dbh{
protected function setUser($userFirstName, $userLastName){
$stmt = $this->connect()->prepare('UPDATE user SET user_FirstName = ?, user_LastName = ? WHERE user_ID = ?);');
if(!$stmt->execute(array($userFirstName, $userLastName))){
$stmt = null;
header("location: ../personaldetail.php?error=stmtfailed");
exit();
}
$stmt = null;
}
}
【问题讨论】:
-
user是数据库吗?如果不是,为什么要像这样扩展数据库类? -
是的。用户就是数据库。
-
当您尝试调用
setUser方法时是否知道用户ID?类最初是如何被调用的 -
我有另一个文件来调用 setUser(用户名和用户列表名),但不包括用户 ID。问题是我不知道在哪里可以定义用户 ID。
-
没有上下文或明确指示这是如何工作的 - 您应该知道在哪里/如何找到
user ID。用户是在更新他们自己的个人资料,还是您(或管理员)在更新个人资料?您是单击超链接开始edit进程还是单击按钮...我们不知道