2017-07-27 8 views
0

これを可能な限り最良の方法で説明します。だから私は3つのテーブルを持つデータベースがあります。お客様には、ログインしてアドレスを、彼らは次のようになります。データベースに情報を送信する際のウェブサイトフォームの問題

customerID 
first_name 
last_name 
email 
phone 
login_fk 
address_fk 

loginID 
username 
password 

addressID 
housenumber 
streetname 
postcode 
city 

コード:私のWebフォームは、データベース何の問題へのログインの詳細と住所の詳細を送信し

$query = "INSERT INTO customers ". "(first_name,last_name,phone,email) ". "VALUES('$fname','$sname','$phone','$email');"; 
$result = mysqli_query($conn, $query) or die(mysqli_error($conn)); 

。 UPDATE CASCADE ON、外部キー制約が失敗する(database1customers CONSTRAINT customers_ibfk_1 FOREIGN KEY(login_fkloginloginIDを参照):

は、子行を追加または更新できません:。しかし、私はこのメッセージと何が顧客テーブルに送信し得ます)

私は、自動増分された主キーとfk値を除いて、すべてのフィールドに値を割り当てています(Webフォームを使用しています)。私はfkの値を設定していないか、間違っているので、このメッセージが表示されていると思いますか?私が正しいとすれば、関係が正しいことを確認するために、他のテーブルの値をどのように取るのですか?つまり、login_fkとloginIDは関係があり、IDはaddress_fkとaddressIDフィールドと同じで同じでなければなりません。データベースを使用して値を挿入すると、loginIDとaddressIDに一致するようにfkの値を手動で割り当てているので、関係は正常です。データベースが正常であると仮定しているため、ログインとアドレスからIDを取得する必要があります顧客テーブルfkの値に送信しますか?私は多くの場面でデータベースを扱ってきましたが、私は多くの場面でPHPやHTML Webサイトで作業してきましたが、動的なWebサイトを作成するための最初の試みであり、愚かな質問であれば謝りますが、ダイナミックなウェブサイトを作成する際に、同じ問題が発生する可能性があります。

+0

で訪れることができますか? –

+0

$ query = "INSERT INTO customers" "(first_name、last_name、phone、email)"。 "VALUES( '$ fname'、 '$ sname'、 '$ phone'、 '$ email');"; $ result = mysqli_query($ conn、$ query)またはdie(mysqli_error($ conn)); –

+0

私はこれをSQLインジェクションでは安全ではないと知っていると付け加えますが、パラメータ化されたクエリに移る前に残りの部分を取り除きたいのです –

答えて

1

を失敗しない最初のログインテーブルに自分のログインIDとパスワードを挿入して、顧客にINSERTクエリを実行します。 子テーブルである "customers"テーブルで宣言されたフィールド "login_fk"と、参照テーブル/親テーブルであるログインテーブルで宣言された主キーとしての "loginID"フィールド。 最初に、「ログイン」テーブル(親テーブル)にデータを挿入する必要があります。これは、「cusomers」テーブルにデータを挿入できるようにするためです。主キーと外部キーの詳細については

、あなたのSQLのinsert文はどのようなものです https://www.w3schools.com/sql/sql_foreignkey.asp

0

のでthatvyour外部キーはそれがすべての主キー、候補キーと外部キーコンセプトについてです

関連する問題