我知道那裏有很多類似的問題,但我已經搜索了很多次,以確保不會浪費任何人的時間,但我一直無法找到解決方案。我希望有人能夠發現我錯過的東西。MySQL(not mysqli)插入最後一個ID不起作用
我們的網站目前正在使用MySQL(不是MySQLi ...我知道它應該更新,但現在至少,這是我必須與之合作)。
我正在通過已創建的表單更新兩個數據庫表。第一張名爲「客戶」的表格包含一些配置文件信息,幷包含一個auto_incremented客戶ID,並由我的表單中的一些信息進行更新。在第二個表'customer_addresses'中,剩下的信息被更新,並且新表中的一列被稱爲customer,並且在DB中被索引以鏈接到'customers'表中的id列。當我提交此表單時,我希望'customers_addresses'表與新客戶一起更新,但未提交時顯示。這裏是我的代碼...(QUESTIONABLE部分是mysql_insert_id()接近底部)....
<?php
if($_POST) {
//Get variables from post array
$first_name = mysql_real_escape_string($_POST['first_name']);
$last_name = mysql_real_escape_string($_POST['last_name']);
$email = mysql_real_escape_string($_POST['email']);
$password = mysql_real_escape_string(md5($_POST['password']));
$address = mysql_real_escape_string($_POST['address']);
$address2 = mysql_real_escape_string($_POST['address2']);
$city = mysql_real_escape_string($_POST['city']);
$state = mysql_real_escape_string($_POST['state']);
$zipcode = mysql_real_escape_string($_POST['zipcode']);
//Create customer query
$query="INSERT INTO customers (first_name,last_name,email,password)
VALUES('$first_name','$last_name','$email','$password')";
//Run query
mysql_query($query);
//Create address query
$query="INSERT INTO customer_addresses (customer,address,address2,city,state,zipcode)
VALUES(mysql_insert_id(),'$address','$address2','$city','$state','$zipcode')";
//Run query
mysql_query($query);
header('Location: index.php');
exit;
}
?>
我知道我連接到DB正確的「客戶」表每次正確更新我提交我的表單並且我知道'customer_addresses'表連接正確,因爲如果我在PHP中手動更改「mysql_insert_id()」,使其成爲正確的客戶ID(例如35),那麼它可以正常工作,但不知怎的,我需要它從第一個查詢獲取這些信息到客戶表。
感謝您的任何幫助。
編輯
我還試圖用「LAST_INSERT_ID()」,但無濟於事爲好。
嘗試從字符串中取出mysql_insert_id。在第一個mysql_query之後,分配它,所以'$ customerId = mysql_insert_id();',然後將其轉儲出來,看看它是否正確填充。 –
你不能只在函數中間有一個函數'mysql_insert_id()',並期望它把輸出放在那裏......它不會那樣工作。將它移動到字符串的外側併爲其分配一個變量。 – cmorrissey
我知道,用$ mysqli-> insert_id,你可以放置代碼,就像我擁有它,所以這就是爲什麼我試過這個。但是,當我寫這篇文章的時候,我可以看到它可能與創建變量的'$'符號有關... –