2011-11-04 67 views
0

我試圖讓行的自動遞增列。該代碼會解釋,但基本上我試圖插入一行到一個名爲訂單表,然後我想要得到的自動遞增的數字。 這是我的PHP。mysql_insert_id和我的困境?


<?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(); 
?> 

在這個階段,我真正想要做的是回聲出自動編號。

這是我的結構


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`) 
) 

任何幫助將不勝感激,謝謝:)

+0

請添加描述你的問題是什麼。它輸出了錯誤的ID嗎?有錯誤嗎? –

+0

你得到的錯誤是什麼? –

+0

我似乎沒有得到一個錯誤。我試過以下內容: // public function checkout($ customerid){ // $ con = mysql_connect(「localhost」,「root」,「root」); // $ selectdb = mysql_select_db( 「camelio」,$ CON); \t //的mysql_query( 「INSERT INTO訂單(客戶ID,訂購日期)VALUES(」 $客戶ID 「CURRENT_TIMESTAMP」); //回聲 「最後插入的記錄有ID:」。mysql_insert_id(); \t \t。 //} 我的問題是,輸出給出了0,而不是增加數量 – Elliot

回答

1

PDO是從mysql_*功能的不同的任何錯誤。

既然你已經使用PDO,你必須從PDO對象使用的方法lastInsertId()

$db->lastInsertId(); 
+0

所以我應該使用這樣的事情 --- ' $ DB = DBConnection進行連接::();? $ q = 「INSERT INTO訂單(客戶ID,訂購日期)VALUES(」 $客戶id 「CURRENT_TIMESTAMP。)」; $ PS = $ DB->製備($ q); $ ps-> execute(); $ db-> lastInsertId(); print $ db; $ db = null; ' --- – Elliot

+0

後$ PS->的execute(),您必須使用:$去年= $ DB-> lastInsertId();最後打印$; – fonini

+0

你真棒。 非常感謝你! – Elliot

3

DBConnection的!= MySQL的

無法使用的功能來自不同的圖書館。您必須要麼改變mysql_num_rows()到相當於DBConnection,或者改變DBConnection東西mysql_*

-1

嘗試增加

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

這可以表明,該數據庫查詢生成