我尝试将表单的数据存储到数据库中。我无法弄清楚为什么这段代码不起作用......没有任何反应。 谢谢您的帮助。 这是我的代码:
<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=mydb', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// Insertion du message à l'aide d'une requête préparée
$auteur="Henri";
$req = $bdd->prepare('INSERT INTO factures (projet, fournisseur, montant, ref, in_out, commentaires, auteur, input_date, maturity) VALUES(:projet, :fournisseur, :montant, :ref, :in_out, :commentaires, :auteur, CURDATE(), :maturity');
$req->execute(array(
'projet'=>$_POST['projet'],
'fournisseur'=>$_POST['fournisseur'],
'montant'=>$_POST['montant'],
'ref'=>$_POST['ref'],
'in_out'=>$_POST['in_out'],
'commentaires'=>$_POST['commentaires'],
'auteur'=>$auteur,
'maturity'=>$_POST['maturity']
));
header('Location: index.php');
?>
正确的代码: - 'projet'=&gt; $ _ POST ['projet']必须为':projet'=&gt; $ _ POST ['projet'], - 在VALUES SQL查询结束时出现了缺失。
答案 0 :(得分:3)
从Documentation可以看出,您放入准备好的SQL语句中的值必须与您在execute()上传递的值完全匹配。
IE:
'projet'=>$_POST['projet'],
应为':projet'=>$_POST['projet'],
您的代码没有做任何事情的原因是因为$_POST['projet']
的值被映射到'projet'。因为“项目”没有出现在您的SQL语句中,所以它没有被映射。但是,在这种情况下,您在SQL语句中缺少“)”。
但是,赞成使用PDO而不是my_sql函数。