php - 参数号无效:未定义参数

时间:2012-11-04 22:14:27

标签: php mysql sql pdo

我在执行简单的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";
            }

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

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

Here你可以找到一些关于如何正确组成一个格式良好的插入查询的例子。

示例:

INSERT INTO table_name (att2, att3, ..., attN) VALUES (value2, value3, ..., valueN);

答案 1 :(得分: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     
                        )');

答案 2 :(得分:-1)

正是他上面所说的,但你可以指定插入的值为Null而不是“”,因为这两者是完全不同的东西。它在第二行超出了作为源的rano网站的例子。 http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html