Php 提交警告时出错:PDOStatement::execute():SQLSTATE[HY093]
警告:PDOStatement::execute():SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配 早上好,我已经看了几个小时了,我只是找不到问题的任何帮助为什么我一直得到这个错误会有帮助Php 提交警告时出错:PDOStatement::execute():SQLSTATE[HY093],php,sql,Php,Sql,警告:PDOStatement::execute():SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配 早上好,我已经看了几个小时了,我只是找不到问题的任何帮助为什么我一直得到这个错误会有帮助 if(isset($\u POST['update'])) { $data=getPosts(); if(empty($data[0])| | empty($data[1])| | empty($data[2])| | empty($data[3])) { echo“输入要
if(isset($\u POST['update']))
{
$data=getPosts();
if(empty($data[0])| | empty($data[1])| | empty($data[2])| | empty($data[3]))
{
echo“输入要更新的玩家id号”;
}否则{
$updateStmt=$statement=$db->prepare('updateplayers SET Id_num=:idnum,Name=:Name,姓氏=:sunrame,Club=:Club WHERE Id_num=:idnum');
$updateStmt->执行(数组)(
':idnum'=>$data[0],
':name'=>$data[1],
“:姓氏”=>$data[2],
“:club'=>$data[3]
));
如果($updateStmt)
{
echo“播放器更新成功”;
}
}
}
如果有五个参数,则必须绑定5个值
在这种情况下,必须分配两次idNum
$updateStmt->execute(array(
':idnum' =>$data[0],
':name' =>$data[1],
':surname' =>$data[2],
':club' =>$data[3],
':idnum' =>$data[0]
));
为了进行测试,请尝试对idnum使用differnt param ref
$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]
));
谢谢你的回答。我发现了问题 如果(empty($data[0])| |不应该出现在那里,那么它现在可以正常工作了 请参阅下面的代码
if(isset($\u POST['update']))
{
$data=getPosts();
if(空($data[1])| |空($data[2])| |空($data[3]))
{
echo“输入要更新的玩家id号”;
}否则{
$updateStmt=$statement=$db->prepare('UPDATE players SET Name=:Name,姓氏=:Name,Club=:Club WHERE Id_Num=:idnum');
$updateStmt->执行(数组)(
':idnum'=>$data[0],
':name'=>$data[1],
“:姓氏”=>$data[2],
“:club'=>$data[3],
));
如果($updateStmt)
{
echo“播放器更新成功”;
}
}
}
为什么要将Id\u num列设置为与以前相同的值?如果Id发生更改,可以说在最初捕获数据时出错。但是您有:idnum作为set参数和WHERE参数。在我看来,您似乎希望将Id\u num设置为与以前相同的值。如果要设置为其他值,为什么不设置:old\u idnum和:new_idnum?不确定这是否是问题所在,但您的查询引用了:sunrame
,并且您将:姓氏
作为参数传递。我只使用一个建议更新了答案。但此建议最好使用部分检查,因为您的错误应该由我的答案解决。出现了相同的错误。我删除了空($data[0])| |在一步一步返回并解决它之后。感谢您的输入。