2011-11-04 7 views
0

J'essaye d'obtenir la colonne auto incrémentée d'une rangée. Le code expliquera, mais fondamentalement j'essaye d'insérer une rangée dans une table appelée des ordres, et puis je veux obtenir le numéro automatique augmenté. Ceci est mon PHP.mysql_insert_id et mes malheurs?


<?php 

$db = DBConnection::connect(); 

$q = "INSERT INTO orders (customerid, orderdate) VALUES (".$customerid.", CURRENT_TIMESTAMP)"; 

$ps = $db->prepare($q);  
$ps->execute(); 
$db = null; 

echo mysql_insert_id(); 
?> 

A ce stade, tout ce que je veux vraiment faire est écho le numéro automatique.

C'est ma structure


CREATE TABLE `orders` (
    `orderid` int(25) NOT NULL AUTO_INCREMENT, 
    `customerid` int(11) NOT NULL, 
    `orderdate` date DEFAULT NULL, 
    PRIMARY KEY (`orderid`), 
    KEY `orderid` (`orderid`) 
) 

Toute aide serait grandement appréciée, merci :)

+0

S'il vous plaît ajouter une description de ce que votre problème. Est-ce qu'il sort le mauvais identifiant? Y a-t-il une erreur? –

+0

Quelle est l'erreur que vous obtenez? –

+0

Je ne semble pas avoir d'erreur. J'ai essayé ce qui suit: // caisse publique ($ customerid) { // $ con = mysql_connect ("localhost", "root", "root"); // $ selectdb = mysql_select_db ("camelio", $ con); \t // mysql_query ("INSERT INTO commandes (customerid, OrderDate) VALUES (" $ customerid "CURRENT_TIMESTAMP"); // echo "Dernière inséré enregistrement a id:".. Mysql_insert_id(); \t \t. //} Mon problème est que la sortie donne un 0, au lieu du nombre incrémentée – Elliot

Répondre

1

AOP est différent de mysql_* fonctions.

Puisque vous avez utilisé PDO, vous devez utiliser la méthode lastInsertId() de l'objet PDO:

$db->lastInsertId(); 
+0

Je devrais utiliser quelque chose comme ça --- ' $ db = DBConnection :: connect().? $ q = "INSERT INTO commandes (customerid, orderdate) VALEURS (". $ customerid. ", CURRENT_TIMESTAMP)"; $ ps = $ db-> préparer ($ q); $ ps-> execute(); $ db-> lastInsertId(); imprimer $ db; $ db = null; ' --- – Elliot

+0

Après $ ps-> execute(), vous devez utiliser: $ last = $ db-> lastInsertId(); imprimer $ last; – fonini

+0

Votre génial. Merci beaucoup! – Elliot

3

DBConnection! = MySQL

Vous ne pouvez pas utiliser les fonctions de différentes bibliothèques comme ça. Vous devez soit changer mysql_num_rows() à l'équivalent DBConnection, soit remplacer le DBConnection par mysql_*.

-1

Essayez d'ajouter

$ps->execute() 
or die(mysql_error()); 

Cela peut montrer des erreurs que la requête de base de données génère