2013-05-28 111 views
1

下面是我試圖讓工作無法獲得mysql_insert_id工作,無法找到答案的任何地方

<?php 
$con=mysqli_connect(//); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$sql="INSERT INTO customers (fname, lname, address, suburb, postcode) 
VALUES 
('$_POST[firstname]','$_POST[lastname]','$_POST[address]','$_POST[suburb]','$_POST[postcode]')"; 

if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 

$sql="INSERT INTO orders (date, location, rego, bike_id) 
VALUES 
('$_POST[date]','$_POST[location]','$_POST[state]','$_POST[bid]')"; 

if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 
echo "ID of last inserted record is: " . mysql_insert_id(); 

mysqli_close($con); 
?> 

我的問題是一些PHP代碼,我不能讓mysql_insert_id工作。實際上,回顯並不顯示任何內容。如果我試圖把它插入一個插入,它會出現0.我是一個完整的新手(有史以來第一次使用PHP),所以我敢肯定我正在做一些明顯錯誤的事情。任何幫助大量讚賞。

這裏是我的表: 客戶:

+----------+-------------+------+-----+---------+----------------+ 
| Field | Type  | Null | Key | Default | Extra   | 
+----------+-------------+------+-----+---------+----------------+ 
| cust_id | int(11)  | NO | PRI | NULL | auto_increment | 
| fname | varchar(20) | YES |  | NULL |    | 
| lname | varchar(20) | YES |  | NULL |    | 
| address | varchar(20) | YES |  | NULL |    | 
| suburb | varchar(20) | YES |  | NULL |    | 
| postcode | int(4)  | YES |  | NULL |    | 
+----------+-------------+------+-----+---------+----------------+ 

訂單:

+----------+-------------+------+-----+---------+----------------+ 
| Field | Type  | Null | Key | Default | Extra   | 
+----------+-------------+------+-----+---------+----------------+ 
| order_id | int(11)  | NO | PRI | NULL | auto_increment | 
| date  | datetime | YES |  | NULL |    | 
| location | varchar(65) | YES |  | NULL |    | 
| rego  | varchar(65) | YES |  | NULL |    | 
| cust_id | int(11)  | YES | MUL | NULL |    | 
| bike_id | int(11)  | YES | MUL | NULL |    | 
+----------+-------------+------+-----+---------+----------------+ 

我想這樣做的原因是因爲當用戶點擊提交訂單形式,一些細節去每張桌子。我要在訂單中的cust_id外鍵滿足客戶

+0

您可以發佈您正在使用的架構嗎?問題可能在那裏,而不是在代碼級別上。您可能沒有將ID字段設置爲auto_increment。 – Bassem

+2

這裏只是一個猜測 - 像這樣混合使用mysqli和mysql調用是否合法? – nurdglaw

+1

請嘗試使用http://www.php.net/manual/en/mysqli.insert-id.php代替。 – Patrickdev

回答

2

的主鍵試試這兩件事情:由於您使用mysqli_query() 參考

  1. 的mysqli :: $ INSERT_ID代替mysql_insert_id() #http://php.net/manual/en/mysqli.insert-id.php

  2. 使用else case也是因爲如果插入不成功,所以你不應該看到字符串「echo」最後一個插入記錄的ID是:「。mysql_insert_id();」

+0

我試過了,它似乎沒有工作。我真的不知道發生了什麼 – Geoff

+0

你是否得到任何錯誤?如果是的話,在這裏發帖並做一件事,在你的$ sql =「INSERT INTO命令(日期,位置,rego,bike_id)之前放回」echo「 VALUES ('$ _POST [date]','$ _ POST [location] 」, '$ _ POST [狀態]', '$ _ POST [報價]')「; 通過這個你會知道,你準備好的查詢是否正確? –

+0

好,所以我試着用這個語法: printf(「New Record has id%d。\ n」,$ mysqli-> insert_id); 它返回「新記錄有ID 0 – Geoff