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

IDが自動生成される場合(つまり、mysqlのAUTO_INCREMENTを使用する場合)、属性リストでIDを指定する必要はありません。

ここでは、整形式の挿入クエリを適切に作成する方法の例をいくつか見つけることができます。

例:

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

VALUESの前の最初の()にすべての列名を書き込み、2番目の列の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

彼が上で言ったこととまったく同じですが、挿入された値を「」ではなくNullとして指定できる場合があります。これは、これら2つが完全に別個のものであるためです。ソースとして言及されているサイトranoの例を超えた2行目です。http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

于 2012-11-04T22:19:28.937 に答える