2016-05-24 89 views
0

我在做用戶登錄時想要更新配置文件的php文件。更新數據baseSQLSTATE [HY093]:無效的參數編號:綁定變量的數量與令牌數量不匹配

我收到SQLSTATE [HY093]:無效的參數編號:綁定變量的數量與令牌數量不匹配。

EditProfile.php

<?php 
session_start(); 
require_once 'class.user.php'; 
$user_home = new USER(); 


$stmt = $user_home->runQuery("SELECT * FROM registered_users WHERE userID=:uid"); 
$stmt->execute(array(":uid"=>$_SESSION['userSession'])); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 
$_SESSION['email'] = $row['email']; 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>PHP Update Data From MySql - By Cleartuts</title> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
</head> 
<body> 
<center> 

<h1>Edit Particulars</h1> 

<div id="body"> 
    <div id="content"> 
    <table align="center" width="100%"> 


      <tr> 
      <td>Full Name</td> 
      <td><?php echo $row["fullName"]; ?></td> 

      </tr> 
      <tr> 
      <td>Mobile Number</td> 
      <td><?php echo $row['mobileNumber']; ?></td> 
      </tr> 

      <tr> 
      <td>Password</td> 
      <td><?php echo $row ['password']; ?></td> 
      </tr> 

      <tr> 
      <td>Address</td> 
      <td><?php echo $row['address']; ?></td> 
      </tr> 

      <tr> 
      <td>Postal Code</td> 
      <td><?php echo $row['postalCode']; ?></td> 
      </tr> 

      <tr> 
      <td>Edit</td> 
      <td><a href="edit_data.php?edit_id=<?php echo $row[0]; ?>"><img src="b_edit.png" alt="Edit" /></a></td> 
      </tr> 

    </table> 
    </div> 
</div> 


</center> 
</body> 
</html> 

edit_data.php

<?php 
session_start(); 
require_once 'class.user.php'; 
$user_home = new USER(); 
$reg_user = new USER(); 

$stmt = $user_home->runQuery("SELECT * FROM registered_users WHERE userID=:uid"); 
$stmt->execute(array(":uid"=>$_SESSION['userSession'])); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 
$email=$_SESSION['email']; 
if(isset($_GET['edit_id'])) 
{ 
    $stmt = $user_home->runQuery("SELECT * FROM registered_users WHERE userID=:uid".$_GET['edit_id']); 


} 
if(isset($_POST['btn-update'])) 
{ 
    // variables for input data 

    $fullName = $_POST['fullName']; 

    $mobileNumber = $_POST['mobileNumber']; 

    $password = $_POST['password']; 
    $address = $_POST['address']; 
    $postalCode = $_POST['postalCode']; 
    // variables for input data 

    // sql query for update data into database 

     if($reg_user->updateUser($fullName,$mobileNumber,$password,$address,$postalCode,$email)) 
     { 

      echo"good"; 
      ?> 
      <script> 
      alert('Data Are Updated Successfully'); 
      window.location.href='home.php'; 
      </script> 
      <?php 
     } 
     else 
     { 
      echo "sorry ,Pleae go to nearest NPC to register."; 
      ?> 
      <script> 
      alert('error occured while updating data'); 
      </script> 
      <?php 
     } 



} 
if(isset($_POST['btn-cancel'])) 
{ 
    header("Location: home.php"); 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>PHP Update Data From MySql - By Cleartuts</title> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
</head> 
<body> 
<center> 

<div id="header"> 
    <div id="content"> 
    <label>PHP PHP Update Data From MySql - By Cleartuts</label> 
    </div> 
</div> 
<div id="body"> 
    <div id="content"> 
    <form method="post"> 
    <table align="center"> 
    <tr> 
    <td>Full Name</td> 
    <td><input type="text" name="fullName" placeholder="full Name" value="<?php echo $row['fullName']; ?>" required /></td> 
    </tr> 
    <tr> 
    <td>Mobile Number</td> 
    <td><input type="text" name="mobileNumber" placeholder="mobile Number" value="<?php echo $row['mobileNumber']; ?>" required /></td> 
    </tr> 

    <tr> 
    <td>Password</td> 
    <td><input type="password" name="password" placeholder="password" value="<?php echo $row['password']; ?>" required /></td> 
    </tr> 

    <tr> 
    <td>Address</td> 
    <td><input type="text" name="address" placeholder="Blk 123 Ang Mo kio Ave 1 #12-112" value="<?php echo $row['address']; ?>" required /></td> 
    </tr> 

    <tr> 
    <td>Postal Code</td> 
    <td><input type="text" name="postalCode" placeholder="123456" value="<?php echo $row['postalCode']; ?>" required /></td> 
    </tr> 
    <tr> 
    <td> 
    <button type="submit" name="btn-update"><strong>UPDATE</strong></button> 
    <button type="submit" name="btn-cancel"><strong>Cancel</strong></button> 
    </td> 
    </tr> 
    </table> 
    </form> 
    </div> 
</div> 



</center> 
</body> 
</html> 

機能的研究

public function updateUser($fullName,$mobileNumber,$password,$address,$postalCode,$email) 
    { 
     try 
     { 

      $password = md5($password); 
      $stmt = $this->conn->prepare("UPDATE SET registered_users (fullName=:fullName,mobileNumber=:mobileNumber,password=:password,address=:address,postalCode=:postalCode WHERE email=:email_id"); 
      $stmt->execute(array(":email_id"=>$email)); 
      $userRow=$stmt->fetch(PDO::FETCH_ASSOC); 

      $stmt->bindparam(":fullName",$fullName); 

      $stmt->bindparam(":mobileNumber",$mobileNumber); 

      $stmt->bindparam(":password",$password); 
      $stmt->bindparam(":address",$address); 
      $stmt->bindparam(":postalCode",$postalCode); 



      $stmt->execute(); 
      return $stmt; 
     } 
     catch(PDOException $ex) 
     { 
      echo $ex->getMessage(); 
     } 
    } 

回答

1

您有更多的參數(:全名,:移動電話號碼,:密碼,... ..)

但你僅結合一個:EMAIL_ID

$stmt = $this->conn->prepare("UPDATE SET registered_users 
     (fullName=:fullName,mobileNumber=:mobileNumber, 
     password=:password,address=:address,postalCode=:postalCode WHERE email=:email_id"); 
     $stmt->execute(array(":email_id"=>$email)); 
+0

$語句= $這個 - > conn->製備(「UPDATE SET registered_users(全名=:真實姓名,移動電話號碼=:移動電話號碼,口令=:密碼,地址=:地址,郵編= :postalCode WHERE email =:email_id「); $ stmt-> execute(array(「:email_id」=> $ email)); $ userRow = $ stmt-> fetch(PDO :: FETCH_ASSOC); $ stmt-> bindparam(「:fullName」,$ fullName); $ stmt-> bindparam(「:mobileNumber」,$ mobileNumber); $ stmt-> bindparam(「:password」,$ password);$ stmt-> bindparam(「:address」,$ address); $ stmt-> bindparam(「:postalCode」,$ postalCode); – Rasul

+0

@peter ..我不理解你的評論..當你需要顯示代碼時更新你的問題..或者獲得你的論點的簡要描述..無論如何你執行$ stmt->執行..before綁定..檢查如果這是對的 – scaisEdge

相關問題