Php SQLSTATE[HY093]:插入的参数编号无效

Php SQLSTATE[HY093]:插入的参数编号无效,php,mysql,Php,Mysql,我需要在妇科表中插入,该表没有行 会话变量在另一页中为2 $_SESSION ["id_patient"] = 2; <?php $insert = $db->prepare("INSERT INTO gynecology(id_patient, nvisita, date_visit, background, reason_visit, exploration, exploration_comp, diagnosis, treatment)

我需要在
妇科
表中插入,该表没有行

会话变量在另一页中为2

$_SESSION ["id_patient"] = 2;


<?php
$insert = $db->prepare("INSERT INTO gynecology(id_patient, nvisita, date_visit, background, reason_visit, exploration, exploration_comp, diagnosis, treatment) 
                                        SELECT IFNULL(gy.id_patient,:id_patient), IFNULL(max(gy.nvisita),0)+1, (now()), :background, :reason_visit, :exploration, :exploration_comp, :diagnosis, :treatment
                                        FROM gynecology gy, patients pa
                                        WHERE gy.id_patient = pa.id
                                        AND PA.ID = :id_patient");

                $insert->bindParam(":background", $background);
                $insert->bindParam(":reason_visit", $reason_visit);
                $insert->bindParam(":exploration", $exploration);
                $insert->bindParam(":exploration_comp", $exploration_comp);
                $insert->bindParam(":diagnosis", $diagnosis);
                $insert->bindParam(":treatment", $treatment);
                $insert->bindParam(":id_patient", $_SESSION["id_patient"]);

                $insert->execute();         
    ?>  
$\u会话[“id\u患者”]=2;
患者
表包含患者的id


谢谢。

您的参数匹配错误。对此进行更改:

            $insert = $db->prepare("INSERT INTO gynecology(id_patient, nvisita, date_visit, background, reason_visit, exploration, exploration_comp, diagnosis, treatment) 
                                    SELECT IFNULL(gy.id_patient,:id_patient), IFNULL(max(gy.nvisita),0)+1, (now()), :background, :reason_visit, :exploration, :exploration_comp, :diagnosis, :treatment
                                    FROM gynecology gy, patients pa
                                    WHERE gy.id_patient = pa.id
                                    AND PA.ID = :id_patient");

            // this first parameter is missing
            $insert->bindParam(":id_patient", $_SESSION["id_patient"]); 
            // the other parameters you have
            $insert->bindParam(":background", $background);
            $insert->bindParam(":reason_visit", $reason_visit);
            $insert->bindParam(":exploration", $exploration);
            $insert->bindParam(":exploration_comp", $exploration_comp);
            $insert->bindParam(":diagnosis", $diagnosis);
            $insert->bindParam(":treatment", $treatment);
            $insert->bindParam(":id_patient", $_SESSION["id_patient"]);

您正在错误匹配参数。对此进行更改:

            $insert = $db->prepare("INSERT INTO gynecology(id_patient, nvisita, date_visit, background, reason_visit, exploration, exploration_comp, diagnosis, treatment) 
                                    SELECT IFNULL(gy.id_patient,:id_patient), IFNULL(max(gy.nvisita),0)+1, (now()), :background, :reason_visit, :exploration, :exploration_comp, :diagnosis, :treatment
                                    FROM gynecology gy, patients pa
                                    WHERE gy.id_patient = pa.id
                                    AND PA.ID = :id_patient");

            // this first parameter is missing
            $insert->bindParam(":id_patient", $_SESSION["id_patient"]); 
            // the other parameters you have
            $insert->bindParam(":background", $background);
            $insert->bindParam(":reason_visit", $reason_visit);
            $insert->bindParam(":exploration", $exploration);
            $insert->bindParam(":exploration_comp", $exploration_comp);
            $insert->bindParam(":diagnosis", $diagnosis);
            $insert->bindParam(":treatment", $treatment);
            $insert->bindParam(":id_patient", $_SESSION["id_patient"]);

问题是什么?它无法插入:Query failedSQLSTATE[HY093]:无效参数编号您的
bindParam()
少于查询中的实际
:params
。请看我的答案。问题是什么?它无法插入:Query failedSQLSTATE[HY093]:无效参数编号您的
bindParam()
少于查询中的实际
:params
。请看我的答案。这条评论怎么办?请告诉我们这个答案是否解决了您的问题,如果是,请投票并检查它是否正确。谢谢:)生成此错误:查询失败SQLSTATE[HY000]:一般错误:2031Try删除
$insert->execute()
。似乎
bind[*]()
execute()
不能混用。如果您没有告知WHERE子句是否有效,但我需要参考患者ID,那么该如何处理此评论?请告诉我们此答案是否解决了您的问题,如果是,请向上投票并将其作为正确答案进行检查。谢谢:)生成此错误:查询失败SQLSTATE[HY000]:一般错误:2031Try删除
$insert->execute()
。似乎
bind[*]()
execute()
不能混用。如果您没有通知WHERE子句它是否有效,但我需要参考患者id