2013-04-05 75 views
-1

我一直在試圖弄清楚爲什麼這個函數在chrome上工作,而不是在firefox上。mysql_insert_id函數返回0

我有一個自動增量字段,是我的主鍵,我得到我的ID。這是我的代碼。

if (isset($_GET['id'])) { 
    $id = $_GET['id']; 
} else { 
    $id = mysql_insert_id(); 
    echo $id; 
} 

我試過把我的連接放在函數中,如下所示,但它仍然不起作用。任何指針將不勝感激。另外,我知道mysqli函數,因爲用戶的設置很老,所以我正在使用這些函數。

$id = mysql_insert_id($conn); 

這是我的代碼,正在做插入。如果你已經做了與當前連接的INSERT查詢

sprintf("INSERT INTO `trade_show_orders` (`SetupDate`,`SetupEndDate`,`ShowName`,`Location`,`Literature`,`StartDate`,`EndDate`,`Attendees`,`Projected`,`File`,`Giveaways`,`AddressBox`,`LocationType`,`Title`,`FirstName`,`LastName`,`Email`,`AddressOne`,`AddressTwo`,`Zip`,`Special`,`OrderDate`,`ShippingLocation`,`ShippingAddressOne`,`ShippingAddressTwo`,`ShippingZip`,`ShippingSpecial`) VALUES ('$setupDate','$endSetup','%s','%s','$values','$eventStart','$eventEnd','%d','%d','".basename($_FILES['fileUpload']['name'])."', '%s','off','%s','%s','%s','%s','%s','%s','%s','%d','%s',NOW(),'%s','%s','%s','%d','%s')", mysql_real_escape_string($_POST['showName']), mysql_real_escape_string($_POST['location']), $_POST['numberAttendees'], $_POST['visitors'], mysql_real_escape_string($_POST['giveaways']), mysql_real_escape_string($_POST['locationType']), mysql_real_escape_string($_POST['personalTitle']), mysql_real_escape_string($_POST['personalFirstName']), mysql_real_escape_string($_POST['personalLastName']), mysql_real_escape_string($_POST['personalEmail']), mysql_real_escape_string($_POST['personalAddressOne']), mysql_real_escape_string($_POST['personalAddressTwo']), $_POST['personalZip'], mysql_real_escape_string($_POST['personalSpecial']), mysql_real_escape_string($_POST['shippingLocation']), mysql_real_escape_string($_POST['shippingAddressOne']), mysql_real_escape_string($_POST['shippingAddressTwo']), $_POST['shippingZip'], mysql_real_escape_string($_POST['shippingSpecial'])); 
+1

該功能根本不依賴於瀏覽器。它只取決於你是否在數據庫中插入了某些東西。如果你還沒有插入一個東西,當然你會得到一個0. – 2013-04-05 15:01:22

+0

嗯,我可以看到它的工作原理是Chrome而不是Firefox。我知道這應該不重要,但它是我所得到的。 – wowzuzz 2013-04-05 15:02:08

+2

事實上,它可以在一個瀏覽器而不是另一個瀏覽器中工作的唯一方式是如果一個瀏覽器向服務器發送不同的信息。所以你錯過了一些關鍵的組件來解決這個問題:JavaScript錯誤,JavaScript代碼和數據發佈(也是接受服務器上的帖子的代碼) – Kato 2013-04-05 15:02:28

回答

2

mysql_insert_id()只會返回一個ID。這意味着它不會從「三次點擊」之前的頁面請求中返回一個ID。它不會返回由相同執行的其他腳本完成的ID,因爲這是通過與mysql不同的連接完成的。

因此,顯示實際進行插入的代碼的其餘部分。 PHP不應該在乎它在遠程運行的瀏覽器。就PHP而言,它只是一個包含一些數據的HTTP請求。如果存在特定於瀏覽器的問題,則會出現在某些客戶端代碼中,例如,一些錯誤的JavaScript做AJAX請求,並沒有正確填寫一個字段。

+0

查看頂部的編輯。 – wowzuzz 2013-04-05 15:09:19

+0

您是否檢查查詢是否成功?例如'$ result = mysql_query($ sql)或死(mysql_error())'? – 2013-04-05 15:11:00

+0

是的,它確實成功了。我已經在插入物上測試了很多次。 – wowzuzz 2013-04-05 15:11:46

0

原來,它與我的插入無關。

顯然,當您在Firefox,IE中使用表單提交圖像時。它將圖像從「submit」重命名爲「submit_x」或「submit_y」

Chrome和Safari會同時提交submit和submit_x,submit_y和圖像。

Firefox和IE 7,8,9只查找submit_x和submit_y,這解釋了它只能在chrome上工作的原因。