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> ";

}

}

4 réponses


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

oui il est auto increment , je veux juste le recuperer et ne pas le modifier

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...