2017-04-09 43 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 } 
 
}

相关问题