2017-02-09 205 views
-1

我有這段代碼插入數據到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(); 
    }    
} 
+2

它似乎不是來自runQuery。檢查register_emp和register_contrib並查找錯誤中的行號/文件。 – aynber

+0

您最好向我們展示'runQuery()'的作用。如果它運行了一個' - > query()',它可以解釋一些問題 – RiggsFolly

+0

我猜想在一個不需要任何參數的' - > execute()中傳遞的數組參數可能是問題。試試'$ stmt-> execute()',看看錯誤是否消失 – RiggsFolly

回答

1

問題出在公民/公民身上。您正在使用不同的字爲準備發言,並結合:

$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

相關問題