2017-08-11 106 views
1

我認爲這段代碼是正確的,但它不能正常工作。如何解決錯誤「SQLSTATE [HY093]:無效的參數號:綁定變量的數量與令牌的數量不匹配」?

我正在嘗試更新數據,但輸出錯誤。我認爲這個問題是綁定時看到的,我的猜測可能是錯誤的!

錯誤

SQLSTATE [HY093]:無效的參數編號:綁定變量的數量不符令牌

問題是什麼數?

class.user.php{ 
public function edit_user($uname,$umail,$upass,$uaddress,$uglevel,$ustate,$userpic){ 
     try 
     { 
      $new_password = password_hash($upass, PASSWORD_DEFAULT); 

      $stmt_edit = $this->conn->prepare('UPDATE users SET 
              user_name=:uname, 
              user_email=:umail, 
              user_pass=:upass, 
              user_address=:uadddress, 
              user_grade_level=:uglevel, 
              ustate=:ustate, 
              user_photo=:upic 
              user_id=:user_id 
             WHERE user_id=:user_id'); 
      $stmt_edit->bindparam(":uname", $uname); 
      $stmt_edit->bindparam(":umail", $umail); 
      $stmt_edit->bindparam(":upass", $new_password); 
      $stmt_edit->bindparam(":uaddress", $uaddress); 
      $stmt_edit->bindparam(":uglevel", $uglevel); 
      $stmt_edit->bindparam(":ustate", $ustate); 
      $stmt_edit->bindparam(":upic", $userpic); 

      if($stmt_edit->execute()){ 
       ?> 
       <script> 
        alert('Successfully Updated ...'); 
        window.location.href='user_list.php'; 
       </script> 
      <?php 
      } 

      return $stmt_edit; 
     } 
     catch(PDOException $e) 
     { 
      echo $e->getMessage();`enter code here` 
     } 
    } 

} 
//edit_user.php 
if(isset($_POST['btn_save_updates']))`enter code here` 
{ 
    $uname = strip_tags($_POST['txt_uname']); 
    $umail = strip_tags($_POST['txt_umail']); 
    $upass = strip_tags($_POST['txt_upass']); 
    $uaddress = strip_tags($_POST['txt_uaddress']); 
    $uglevel = strip_tags($_POST['txt_uglevel']); 
    $ustate = strip_tags($_POST['txt_ustate']); 

    $imgFile = $_FILES['user_image']['name'];//image file 
    $tmp_dir = $_FILES['user_image']['tmp_name'];//directory 
    $imgSize = $_FILES['user_image']['size'];//image file size 

    if($imgFile) 
    { 
     $upload_dir = 'LMS_students/'; // upload directory 
     $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); // get image extension 
     $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions 
     $userpic = rand(1000,1000000).".".$imgExt; 
     if(in_array($imgExt, $valid_extensions)) 
     { 
      if($imgSize < 5000000) 
      { 
       unlink($upload_dir.$edit_row['user_photo']); 
       move_uploaded_file($tmp_dir,$upload_dir.$userpic); 
      } 
      else 
      { 
       $errMSG = "Sorry, your file is too large it should be less then 5MB"; 
      } 
     } 
     else 
     { 
      $errMSG = "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
     } 
    } 
    else 
    { 
     // if no image selected the old image remain as it is. 
     $userpic = $edit_row['user_photo']; // old image from database 
    } 


    // if no error occured, continue .... 
    if(!isset($errMSG)) 
    { 

     $user -> edit_user($uname,$umail,$upass,$uaddress,$uglevel,$ustate,$userpic); 

    } 
    else{ 
     ?> 
     <script> 
      alert('user couldnt be Updated'); 
      window.location.href='user_list.php'; 
     </script> 
    <?php 
    } 
} 

?> 
+0

'USER_ID =使用:user_id'我想這行一個問題..你通過user_id? –

+2

像錯誤說你只是沒有相同數量的綁定參數,你會錯過:userid – MacBooc

+0

你也不能重複使用佔位符,但是爲什麼你不想改變'user_id',不知道。 –

回答

0

請檢查下面點

1)您沒有綁定user_id

2)user_photo=:upic, // missing comma

3)user_address=:uadddress, // typo ddd

您沒有在功能上添加USER_ID因此,需要補充的是,那麼在bindparam

+0

@sureshadhikari,你解決了嗎? –

相關問題