2016-03-23 15 views
0

Iveは複数の回答を読んでいますが、私にとってはうまくいくものはありません。複数のテーブル更新の問題

Cus_acc_detail

1 : CustomerID 
2 : Acctid 
3 : CUS_Fname 
4 : Cus_Lname 
5 : CUS_Phone 
6 : Cus_Email 

Us_Register

1 : Cus_Email 
2 : Cus_Password 
3 : Cus_confirm_Password 

私はCus_acc_detailとCus_registerのためだけCus_Emailからすべてのフィールドを更新する:

は私が& Cus_Register Cus_acc_details 2つのテーブルを持っています。 私は以下の持っている:私は間違った場所に誰かが、おそらく指摘することができ、

<?php 
    $user = $_SESSION["Cus_Email"]; 
    if (isset($_POST['Update'])) { 


    $UpdateFname = $_POST['fname']; 
    $UpdateLname = $_POST['Lname']; 
    $UpdateEmail = $_POST['email']; 
    $UpdatePhone = $_POST['phone']; 
    } 

    $sql = $dbc->query("UPDATE Cus_Register r INNER JOIN Cus_acc_details d ON(r.Cus_Email = d.Cus_Email) SET CUS_Fname = ' $UpdateFname', CUS_Lname = ' $UpdateLname', CUS_Email = ' $UpdateEmail', Cus_Phone = ' $UpdatePhone' WHERE CUS_Email = '$user' "); 
header('Location: Cus_Account.php'); 
?> 

ページは、単純に更新されません。

+1

あなたは[sql injection attacks](http://bobby-tables.com)の脆弱性があり、クエリ呼び出しが成功したか、最初に呼び出されたとみなしているだけです。デバッグを開始する必要があります。 'var_dump($ _ POST)'を実行し、サーバに何が到着したかを確認してください。戻り値のチェックを開始するか、dbコールなどからの例外をキャッチする... –

+1

そしてそのクエリを与えて、 'CUS_Email'フィールドの' $ user'を引用できなかったので、完全に失敗したと思います。 'WHERE CUS_Email = president @ whitehouse.gov'はbarfに行きます。その電子メールアドレスはあなたのテーブルのフィールドではなく、引用符がないので、比較のために使用する文字列ではありません –

+0

エラー 'Cus_Register.Cus_Email = Cus_Register.Cus_Email'です。 'Cus_acc_detail.Cus_Email = Cus_Register.Cus_Email' .....でなければなりません。第二に、' CUS_Email'を書くと、このフィールドは2つのテーブルに存在するため、mysqlは更新するテーブルを知らないのです。 –

答えて

0

フィールドCUS_Emailは両方のテーブルにSETで指定する必要があります。

UPDATE Cus_Register r INNER JOIN Cus_acc_details d ON(r.Cus_Email = d.Cus_Email) SET CUS_Fname = ' $UpdateFname', CUS_Lname = ' $UpdateLname', r.CUS_Email = ' $UpdateEmail', d.CUS_Email = ' $UpdateEmail', Cus_Phone = ' $UpdatePhone' WHERE CUS_Email = '$user' 
関連する問題