そこには多くの同様の質問がありますが、誰かの時間を無駄にしないように何度も調べていますが、解決策を見つけることができませんでした。私は、誰かが私が見逃しているものを見つけられることを期待しています。MySQL(mysqliではない)最後のIDが挿入されていない
私たちのサイトは現在MySQLを使用しています(MySQLiではありません...私はそれが更新されるべきであることを知っていますが、少なくとも今のところ、これは私が処理しなければならないものです)。
作成されたフォームを使用して2つのDBテーブルを更新しています。 「顧客」と呼ばれる最初の表には、いくつかのプロファイル情報があり、auto_incremented顧客IDが含まれており、自分のフォームの情報の一部によって更新されます。 2番目のテーブル 'customer_addresses'では、残りの情報が更新され、新しいテーブルのカラムの1つがcustomerと呼ばれ、DBでインデックスされて 'customers'テーブルのidカラムにリンクされています。このフォームを送信する際に、 'customers_addresses'テーブルを新しい顧客に更新してもらいたいですが、送信時に表示されません。ここに私のコードは、(QUESTIONABLE PARTは、下の方にmysql_insert_id()IS)...です....
<?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に接続されています知っています私は私のフォームを提出し、私は手動でPHPの "mysql_insert_id()"、正しい顧客IDは何か(35)、それは正しく動作するように変更するので、私は 'customer_addresses'テーブルが正しく接続されている知っているが、どうにかして最初のクエリからcustomersテーブルにこの情報を取得する必要があります。
ありがとうございます。私も同様に「LAST_INSERT_ID()」を使用しようとしましたが、無駄にしている
EDIT
。
をしよう文字列の中から 'mysql_insert_id'を取り出してみてください。最初のmysql_queryの後に '$ customerId = mysql_insert_id();'を代入し、それをダンプして、それが正しく設定されているかどうかを確認します。 –
文字列の途中に 'mysql_insert_id()'関数を置くだけでは、その出力をそこに置くことはできません...そのようには動作しません。それをあなたの文字列の外側に移動し、それに変数を割り当てます。 – cmorrissey
私は$ mysqli-> insert_idを使ってコードを置くことができますので、これを試してみました。しかし、私がこれを書いているとき、変数を作成する '$'記号と何か関係があることがわかります... –