-1

我尝试将表单的数据存储到数据库中。我无法弄清楚为什么这段代码不起作用......什么也没有发生。感谢您的帮助。这是我的代码:

<?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'=>$_POST['projet'] 必须是 ':projet'=>$_POST['projet'], - 在 VALUES SQL 查询的末尾缺少 )。

4

1 回答 1

3

正如您从文档中看到的那样,您放入准备好的 SQL 语句中的值必须与您传递给 execute() 的值完全匹配。

IE:

'projet'=>$_POST['projet'],应该':projet'=>$_POST['projet'],

你的代码什么都不做的原因是因为值$_POST['projet']被映射到'projet'。因为 'project' 没有出现在您的 SQL 语句中,所以它没有被映射。但是,在这种情况下,您的 SQL 语句中缺少一个“)”。

但是,使用 PDO 而不是 my_sql 函数值得称赞。

于 2013-03-04T21:59:59.860 回答