Php PDO SQLSTATE[HY093]:参数编号无效:未定义参数
我知道这个错误意味着什么,但对我来说,无论我多么努力地检查和重写,我都找不到它。已经做了一段时间了,需要一双新的眼睛来看看我哪里做错了 更新功能Php PDO SQLSTATE[HY093]:参数编号无效:未定义参数,php,mysql,pdo,Php,Mysql,Pdo,我知道这个错误意味着什么,但对我来说,无论我多么努力地检查和重写,我都找不到它。已经做了一段时间了,需要一双新的眼睛来看看我哪里做错了 更新功能 public function student_acadbg_update($acadbgID, $LRN, $gradesix, $gradesixyear, $gsixawards, $gradeten, $gradetenyear, $gtenawards, $orgs, $extraawards) { try {
public function student_acadbg_update($acadbgID, $LRN, $gradesix, $gradesixyear, $gsixawards, $gradeten, $gradetenyear, $gtenawards, $orgs, $extraawards)
{
try
{
$query=$this->db->prepare("UPDATE tb_student_acadbg SET LRN = :LRN,
gradesix = :gradesix,
gradesixyear = :gradesixyear,
gsixawards = :gsixawards,
gradeten = :gradeten,
gradetenyear = :gradetenyear,
gtenawards = :gtenawards,
orgs = :orgs,
extraawards = :extrawards
WHERE acadbgID = :acadbgID");
$query->bindParam(":LRN", $LRN, PDO::PARAM_STR);
$query->bindParam(":gradesix", $gradesix, PDO::PARAM_STR);
$query->bindParam(":gradesixyear", $gradesixyear, PDO::PARAM_STR);
$query->bindParam(":gsixawards", $gsixawards, PDO::PARAM_STR);
$query->bindParam(":gradeten", $gradeten, PDO::PARAM_STR);
$query->bindParam(":gradetenyear", $gradetenyear, PDO::PARAM_STR);
$query->bindParam(":gtenawards", $gtenawards, PDO::PARAM_STR);
$query->bindParam(":orgs", $orgs, PDO::PARAM_STR);
$query->bindParam(":extraawards", $extraawards, PDO::PARAM_STR);
$query->bindParam(":acadbgID", $acadbgID, PDO::PARAM_INT);
$query->execute();
return true;
}
catch(PDOException $e)
{
echo $e->getMessage();
return false;
}
}
收集用户输入和调用函数的位置
if(isset($_POST['btn-update']))
{
$LRN = $_GET['LRN'];
$acadbgID = $_POST['acadbgID'];
$gradesix = $_POST['gradesix'];
$gradesixyear = $_POST['gradesixyear'];
$gsixawards = $_POST['gsixawards'];
$gradeten = $_POST['gradeten'];
$gradetenyear = $_POST['gradetenyear'];
$gtenawards = $_POST['gtenawards'];
$orgs = $_POST['orgs'];
$extraawards = $_POST['extraawards'];
if($crud->student_acadbg_update($acadbgID, $LRN, $gradesix, $gradesixyear, $gsixawards, $gradeten, $gradetenyear, $gtenawards, $orgs, $extraawards))
{
$msg = "<div class='alert alert-info'>
<strong>WOW!</strong> Record was inserted successfully! <a href='student.php'>Click here to see!</a>
</div>";
}
else
{
$msg = "<div class='alert alert-warning'>
<strong>SORRY!</strong> you fucked up !
</div>";
}
}
if(isset($\u POST['btn-update']))
{
$LRN=$_GET['LRN'];
$acadbgID=$_POST['acadbgID'];
$gradesix=$_POST['gradesix'];
$gradesixyear=$_POST['gradesixyear'];
$gsixawards=$_POST['gsixawards'];
$gradeten=$_POST['gradeten'];
$gradetenyear=$_POST['gradetenyear'];
$gtenawards=$_POST['gtenawards'];
$orgs=$_POST['orgs'];
$extraawards=$_POST['extraawards'];
if($crud->student_acadbg_update($acadbgID、$LRN、$gradesix、$GradeSixAwards、$gradeten、$gradetenyear、$gtenawards、$orgs、$extraawards))
{
$msg=”
哇!记录已成功插入!
";
}
其他的
{
$msg=”
对不起!你搞砸了!
";
}
}
这是用户注册所经历的两部分过程中的第二部分,LRN是我将各种其他表条目和详细信息绑定到特定人员的主要参考点。根据LRN从数据库获取数据没有问题,但由于某些原因,此更新无法工作,而我的10+其他CRUD函数都可以正常工作。我就是搞不懂
我最初跳过了'acadbgID'变量,因为它只是我数据库中的一个自动递增字段,我还没有真正使用它。我在其他更新函数中跳过了类似的自动增量字段,但出于沮丧,我决定尝试将其放入,但仍然没有
抱歉,如果它有点混乱,我只是把它放在一起测试核心功能,抛光将是为了当一切都正常工作。如果有任何细节需要补充,请告诉我。提前谢谢
另外,如果有人看到任何不好的做法,请指出它们,我仍在不断学习,因此我确信还有改进的余地。SQL参数占位符和绑定参数规范之间存在不匹配
SQL中的
extrawards
与bind中的extrawards
不同extrawards
与SQL中的extrawards
不同bind@YvesLeBorg请回答这个问题,这样我可以给你适当的信用。对于这样一个小错误,将近6个小时。非常感谢。我感觉到了你的痛苦:做了那件T恤衫。我喜欢你把代码排成空气和空格的方式,这样定位这些代码就容易多了:)我不确定你的表格设计,但是gradesixyear
,gradesixAwards
,gsixawards
,然后重复10次对我来说似乎是个糟糕的表格结构。你有一到十年级的专栏吗?这只是与不良做法有关,而不是问题所在。这也不是PHP实践,而是DB设计代码>是其中之一。在系统允许的情况下,我会在10分钟内接受它,这让我很尴尬,甚至连系统都说它解决得太快了:))。