我在执行简单的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";
}
如何解决这个问题?
答案 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