我不明白为什么我的Statement :: execute()错误?

时间:2014-08-05 09:25:48

标签: php pdo

我的代码中出现了错误,但我没有发现错误...你能帮帮我吗? 这是我的代码:

$updt=$connect->prepare("INSERT INTO utilisateurs VALUES ('',:nom, :prenom, :email, :identifiant, MD5(:mdp)");

$updt->execute(array('nom'=>$nom,
'prenom'=>$prenom,
'email'=>$email,
'identifiant'=>$identifiant,
'mdp'=>$motDePasse
));

header('./gestion-utilisateur.php');</pre>

这就是错误:

Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2 in...

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

请改为尝试:

 $updt=$connect->prepare("INSERT INTO utilisateurs VALUES ('',:nom, :prenom, :email, :identifiant, :mdp)");

$updt->execute(array('nom'=>$nom,
'prenom'=>$prenom,
'email'=>$email,
'identifiant'=>$identifiant,
'mdp'=>MD5($motDePasse)
));

header('./gestion-utilisateur.php');

答案 1 :(得分:0)

这可能会帮助你

$updt=$connect->prepare("INSERT INTO utilisateurs VALUES ('',:nom, :prenom, :email, :identifiant, MD5(:mdp))");
// I think u missed one parathesis at the last thats it                                                    ^ 

答案 2 :(得分:0)

在本声明中

$updt=$connect->prepare("INSERT INTO utilisateurs 
                         VALUES ('',:nom, :prenom, :email, 
                                 :identifiant, MD5(:mdp)");

我认为您传递''的第一个字段是自动增量字段,如id

当你没有将字段列表传递给查询时,你也要求MySQL找出自动添加数据的字段,它会通过查看模式并按顺序获取该表的字段名来实现。它们存储在架构中。这可能很危险,因为其他人很可能在架构中更改它们存储的顺序。

因此,最好添加要插入查询的字段名称。

MySQL将为您管理自动增量字段,但现在它知道应该从VALUE列表中插入数据的字段。

所以使用: -

$updt=$connect->prepare("INSERT INTO utilisateurs 
                         (nom,prenom,email,identifiant,mdp) 
                         VALUES (:nom, :prenom, :email, 
                                 :identifiant, MD5(:mdp)");