Bonjour je suis débutant en php5 et pdo j'ai un problème au niveau de lastinsertid merci de m'aider:
dèja j'ai essayer de faire la connection par exemple $db->query mais j'ai fait une fonction static et je l'appelle dans chaque requete Connection::db().
mon code est comme ça :
classe connection :
class Connection{
public static function db(){
try {
$PARAM_hote='localhost';
$PARAM_nom_bd='base';
$PARAM_utilisateur='root';
$PARAM_mot_passe='root';
$PARAM_set = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
return $base = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe, $PARAM_set );
}
catch ( Exception $e ) {
die('Impossible de se connecter à la base de données : '. $e->getMessage());
}
}
}
classe client
class Client{
public function ajoutClient($post){
$query = Connection::db() ->prepare("INSERT into client
"
. "(civilite,nom,prenom,date_naissance,tel,email,mot_de_passe,conseillere,admin_note,date_creation) "
. "values "
. "(:civilite,:nom,:prenom,:date_naissance,:tel,:email,:mot_de_passe,:conseillere,:admin_note,:date_creation)");
$tab = explode("/",$post'date_naissance']);
$date_naissance = $tab[2]."-".$tab[1]."-".$tab[0];
$query->execute(array(
':civilite' => $post'civilite'],
':nom' => $post'nom'],
':prenom' => $post'prenom'],
':date_naissance' => $date_naissance,
':tel' => $post'tel'],
':email' => $post'email'],
':mot_de_passe' => $post'mot_de_passe'],
':admin_note' => $post'admin_note'],
':conseillere' => $post'conseillere'],
':date_creation' => date('Y-m-d H:i:s'),
));
$id_client = $query->lastInsertId();
$query2 = Connection::db()->prepare("INSERT into adresse\_livraison
"
. "(adresse1,adresse2,adresse3,ville,cp,pays,id_client) "
. "values "
. "(:adresse1,:adresse2,:adresse3,:ville,:cp,:pays,:id_client)");
$query2->execute(array(
':adresse1' => $post'adresse1'],
':adresse2' => $post'adresse2'],
':adresse3' => $post'adresse3'],
':ville' => $post'ville'],
':cp' => $post'cp'],
':pays' => $post'pays'],
':id_client' => $id_client,
));
echo "<script> alert('Ajout avec succes');</script> ";
}
}
je me pose juste une question ?
ton champs id_client est il en auto incrément ?
si oui tu ne peu pas le modifier avec une requete
Salut,
"lastInsertId" est une méthode de PDO, et tu essaies de l'utiliser sur $query qui est lui un PDOStatement.
Cette méthode doit être appliquée sur Connection::db().
( http://www.php.net/manual/fr/pdo.lastinsertid.php)
Et pourquoi ne pas mettre le résultat de Connection::db() dans une variable ? Tu l'utilises 2 fois ici, tu crées donc deux instances PDO alors qu'une seule te suffit.
$query2 = Connection::db()->prepare("INSERT into `adresse_livraison` "
. "(adresse1,adresse2,adresse3,ville,cp,pays,id_client) "
. "values "
. "(:adresse1,:adresse2,:adresse3,:ville,:cp,:pays,:id_client)");
la c'est un insert et tu essaye de l'inserer...