为什么我得到这个错误“SQLSTATE [HY093]:无效的参数号:参数未定义”?
问题描述:
我有这段代码插入数据到MySQL。当我尝试调用函数register_emp()时发生错误。你能告诉我该怎么做才能解决这种错误。谢谢。为什么我得到这个错误“SQLSTATE [HY093]:无效的参数号:参数未定义”?
if($user->register_emp($last,$first,$middle,$middle,
$address,$contact,$email,$birth,$gender,
$status,$citizen,$position,$dependent))
{
try
{
$stmt = $user->runQuery("SELECT MAX(ID) as LastID from employeeprofile");
$stmt->execute(array());
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() == 1)if($stmt->rowCount() == 1){
$owner=$userRow['LastID'];
if($user->register_contrib($owner,$sss,$tin,$pagibig,$phil)){
$user->redirect('admin1.php');
}
}
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
这是我试图调用的register_emp函数。
public function register_emp($last,$first,$middle,$address,
$zip,$contact,$email,$birth,
$gender,$status,$citizen,$position,$dependent)
{
try
{
$stmt = $this->conn->prepare("INSERT INTO `proll`.`employeeprofile`
(`Lastname`, `Firstname`, `Middlename`, `Address`, `ZIP`, `Contact`, `Email`, `Birthdate`, `Gender`, `Status`, `Citizenship`, `Position`, `Dependent`) VALUES
(:last,:first,:middle,:address,:zip,:contact,:email,:birth,:gender,:status,:citizenship,:position,:dependent)");
$stmt->bindparam(":last", $last);
$stmt->bindparam(":first", $first);
$stmt->bindparam(":middle", $middle);
$stmt->bindparam(":address", $address);
$stmt->bindparam(":zip", $zip);
$stmt->bindparam(":contact", $contact);
$stmt->bindparam(":email", $email);
$stmt->bindparam(":birth", $birth);
$stmt->bindparam(":gender", $gender);
$stmt->bindparam(":status", $status);
$stmt->bindparam(":citizen", $citizen);
$stmt->bindparam(":position", $position);
$stmt->bindparam(":dependent", $dependent);
$stmt->execute();
return $stmt;
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
答
问题出在公民/公民身上。您正在使用不同的字为准备发言,并结合:
$stmt = $this->conn->prepare("INSERT INTO `proll`.`employeeprofile`
(`Lastname`, `Firstname`, `Middlename`, `Address`, `ZIP`, `Contact`, `Email`, `Birthdate`, `Gender`, `Status`, `Citizenship`, `Position`, `Dependent`) VALUES
(:last,:first,:middle,:address,:zip,:contact,:email,:birth,:gender,:status,:citizenship,:position,:dependent)");
....
$stmt->bindparam(":citizen", $citizen);
更改他们是同一个词,你会好的。
+0
谢谢你的回答。上帝保佑 – generals
它似乎不是来自runQuery。检查register_emp和register_contrib并查找错误中的行号/文件。 – aynber
您最好向我们展示'runQuery()'的作用。如果它运行了一个' - > query()',它可以解释一些问题 – RiggsFolly
我猜想在一个不需要任何参数的' - > execute()中传递的数组参数可能是问题。试试'$ stmt-> execute()',看看错误是否消失 – RiggsFolly