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');
?>
ページは、単純に更新されません。
あなたは[sql injection attacks](http://bobby-tables.com)の脆弱性があり、クエリ呼び出しが成功したか、最初に呼び出されたとみなしているだけです。デバッグを開始する必要があります。 'var_dump($ _ POST)'を実行し、サーバに何が到着したかを確認してください。戻り値のチェックを開始するか、dbコールなどからの例外をキャッチする... –
そしてそのクエリを与えて、 'CUS_Email'フィールドの' $ user'を引用できなかったので、完全に失敗したと思います。 'WHERE CUS_Email = president @ whitehouse.gov'はbarfに行きます。その電子メールアドレスはあなたのテーブルのフィールドではなく、引用符がないので、比較のために使用する文字列ではありません –
エラー 'Cus_Register.Cus_Email = Cus_Register.Cus_Email'です。 'Cus_acc_detail.Cus_Email = Cus_Register.Cus_Email' .....でなければなりません。第二に、' CUS_Email'を書くと、このフィールドは2つのテーブルに存在するため、mysqlは更新するテーブルを知らないのです。 –