-1

フォームのデータをDBに保存しようとしています。このコードが機能しない理由がわかりません... 何も起こりません。ご協力ありがとうございました。これが私のコードです:

<?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ステートメントに ")"がありません。

ただし、my_sql関数ではなくPDOを使用することには賛辞があります。

于 2013-03-04T21:59:59.860 に答える