1

我在执行一个简单的 INSERT 请求时遇到了一些问题。如标题中所述,我收到此消息“无效的参数编号:未定义参数”。第一个值是一个 id(主自动递增)

$req = $pdo->prepare('INSERT INTO championnat_classement 
                        VALUES (
                        "",
                        :Equipe,
                        :Championnat,
                        :Saison,
                        :Journee,
                        :Points,
                        :NbMatch,
                        :Position,
                        :Victoire,
                        :Nul,
                        :Defaite,
                        :MatchJoueDomicile,
                        :PointsDomicile,
                        :VictoireDomicile,
                        :NulDomicile,
                        :DefaiteDomicile,
                        :ButPourDomicile,
                        :ButContreDomicile,
                        :MatchJoueExterieur,
                        :PointsExterieur,
                        :VictoireExterieur,
                        :NulExterieur,
                        :DefaiteExterieur,
                        :ButPourExterieur,
                        :ButContreExterieur     
                        )');
if ($req->execute(array(
                        "Equipe" => $this->idEquipe1,
                        "Championnat" => $this->idChamp,
                        "Saison" => $this->saison,
                        "Journee" => $this->journee,
                        "Points" => $this->pointsTotaux,
                        "NbMatch" => $this->matchJouesTotal,
                        "Position" => $this->position,
                        "Victoire" => $this->matchGagneeTotal,
                        "Nul" => $this->matchNulTotal,
                        "Defaite" => $this->matchPerduTotal,
                        "MatchJoueDomicile" => $this->matchJouesDomicile,
                        "PointsDomicile" => $this->pointsDomicile,
                        "VictoireDomicile " => $this->matchJouesDomicile,
                        "NulDomicile" => $this->matchNulDomicile,
                        "DefaiteDomicile" => $this->matchPerduDomicile,
                        "ButPourDomicile" => $this->butMarquesDomicile,
                        "ButContreDomicile" => $this->butEncaissesDomicile,
                        "MatchJoueExterieur" => $this->matchJouesExterieur,
                        "PointsExterieur" => $this->pointsExterieur,
                        "VictoireExterieur" => $this->matchGagneeExterieur,
                        "NulExterieur" => $this->matchNulExterieur,
                        "DefaiteExterieur" => $this->matchPerduExterieur,
                        "ButPourExterieur" => $this->butMarquesExterieur,
                        "ButContreExterieur" => $this->butEncaissesExterieur
                    ))) {
                return "ok";
            }

如何解决这个问题?

4

3 回答 3

1

在 VALUES 之前的第一个 () 中写下所有列名,并在第二个跳过你的 id,你放 "" .. !!! 我不知道您的列的确切名称,因此您必须编写它们..

$req = $pdo->prepare('INSERT INTO championnat_classement 
                            (
                            Equipe,
                            Championnat,
                            Saison,
                            Journee,
                            Points,
                            NbMatch,
                            Position,
                            Victoire,
                            Nul,
                            Defaite,
                            MatchJoueDomicile,
                            PointsDomicile,
                            VictoireDomicile,
                            NulDomicile,
                            DefaiteDomicile,
                            ButPourDomicile,
                            ButContreDomicile,
                            MatchJoueExterieur,
                            PointsExterieur,
                            VictoireExterieur,
                            NulExterieur,
                            DefaiteExterieur,
                            ButPourExterieur,
                            ButContreExterieur
                            ) VALUES (
                            :Equipe,
                            :Championnat,
                            :Saison,
                            :Journee,
                            :Points,
                            :NbMatch,
                            :Position,
                            :Victoire,
                            :Nul,
                            :Defaite,
                            :MatchJoueDomicile,
                            :PointsDomicile,
                            :VictoireDomicile,
                            :NulDomicile,
                            :DefaiteDomicile,
                            :ButPourDomicile,
                            :ButContreDomicile,
                            :MatchJoueExterieur,
                            :PointsExterieur,
                            :VictoireExterieur,
                            :NulExterieur,
                            :DefaiteExterieur,
                            :ButPourExterieur,
                            :ButContreExterieur     
                        )');
于 2012-11-04T22:19:34.827 回答
1

如果 id 是自动生成的(即在 mysql 中使用 AUTO_INCREMENT),则不必在属性列表中指定它。

在这里,您可以找到一些有关如何正确编写格式良好的插入查询的示例。

例子:

INSERT INTO table_name (att2, att3, ..., attN) VALUES (value2, value3, ..., valueN);
于 2012-11-04T22:17:34.817 回答
-1

正是他上面所说的,但您可以将插入的值指定为 Null 而不是“”,因为这两者是完全不同的东西。它在作为来源提到的站点 rano 中的示例之外的第二行。http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

于 2012-11-04T22:19:28.937 回答