2017-04-09 64 views
-1

警告:PDOStatement對象::執行():SQLSTATE [HY093]:無效參數號:綁定變量的數目不匹配的令牌的數目錯誤提交警告時:PDOStatement對象::執行():SQLSTATE [HY093]

美好的一天,我一直在看這幾個小時,我只是找不到任何幫助,爲什麼我不斷收到這個錯誤會有所幫助。

if(isset($_POST['update'])) 
 
{ 
 
\t $data = getPosts(); 
 
\t \t if(empty($data[0]) || empty($data[1]) || empty($data[2]) || empty($data[3])) 
 
\t \t { 
 
\t \t \t echo 'Enter player id number to update'; 
 
\t \t } \t else { 
 
\t \t \t \t $updateStmt = $statement = $db->prepare('UPDATE players SET Id_num = :idnum, Name = :name, Surname = :sunrame, Club = :club WHERE Id_num = :idnum'); 
 
\t \t \t \t $updateStmt->execute(array(
 
\t \t \t \t \t \t \t ':idnum' =>$data[0], 
 
                 ':name' =>$data[1], 
 
                 ':surname' =>$data[2], 
 
                 ':club' =>$data[3] 
 
\t \t \t \t)); 
 
\t \t \t \t if($updateStmt) 
 
\t \t \t \t 
 
\t \t \t \t { 
 
\t \t \t \t 
 
            
 
\t \t \t \t \t echo 'Player updated successfully'; 
 
            
 
           } 
 
\t \t \t } 
 
}

+0

爲什麼設置ID_NUM列與之前的值相同? – jarlh

+0

如果ID發生變化,可以說在初始捕獲數據時發生了錯誤 –

+0

但是,您有:idnum既作爲SET參數,也作爲WHERE參數。可以將Id_num設置爲與之前相同的值。如果你想設置爲另一個值,爲什麼不具有:old_idnum和:new_idnum? – jarlh

回答

0

你有五PARAMS,那麼你必須綁定5個值。

在你的情況下,必須分配IDNUM兩個時間

  $updateStmt->execute(array(
         ':idnum' =>$data[0], 
         ':name' =>$data[1], 
         ':surname' =>$data[2], 
         ':club' =>$data[3], 
         ':idnum' =>$data[0] 
      )); 

和公正的測試嘗試使用不同的充PARAM裁判的IDNUM

$updateStmt = $statement = $db->prepare('UPDATE players 
       SET Id_num = :idnum 
       , Name = :name 
       , Surname = :sunrame 
       , Club = :club 
       WHERE Id_num = :idnum2'); 
    $updateStmt->execute(array(
        ':idnum' =>$data[0], 
        ':name' =>$data[1], 
        ':surname' =>$data[2], 
        ':club' =>$data[3], 
        ':idnum2' =>$data[0] 
     )); 
+0

我試過這個,仍然有相同的錯誤 –

+0

我已經更新了答案只是一個建議..但這個建議的一部分檢查更好的代碼,因爲你有錯誤應該由我的答案解決.. – scaisEdge

+0

發生了同樣的錯誤。我刪除了空的($ data [0])||回去後一步一步解決它。感謝您的意見。 –

0

感謝所有的答案。我發現了這個問題。

如果(空($數據[0])||不應該一直存在,現在是可以正常使用。

請參見下面的代碼。

if(isset($_POST['update'])) 
 
{ 
 
\t $data = getPosts(); 
 
\t \t if(empty($data[1]) || empty($data[2]) || empty($data[3])) 
 
\t \t { 
 
\t \t \t echo 'Enter player id number to update'; 
 
\t \t } \t else { 
 
\t \t \t \t $updateStmt = $statement = $db->prepare('UPDATE players SET Name = :name, Surname = :surname, Club = :club WHERE Id_Num = :idnum'); 
 
\t \t \t \t $updateStmt->execute(array(
 
                 ':idnum' =>$data[0], 
 
                 ':name' =>$data[1], 
 
                 ':surname' =>$data[2], 
 
                 ':club' =>$data[3], 
 
\t \t \t \t)); 
 
\t \t \t \t if($updateStmt) 
 
\t \t \t \t 
 
\t \t \t \t { 
 
\t \t \t \t 
 
            
 
\t \t \t \t \t echo 'Player updated successfully'; 
 
            
 
           } 
 
\t \t \t } 
 
}

相關問題