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分钟内接受它,这让我很尴尬,甚至连系统都说它解决得太快了:))。