私はbilling_info, shipping_info
の2つのテーブルを持っています。 billing_idはプライマリキーで、billing_idはshipping_infoの外部キーです。PHPでプリペアドステートメントを使用して複数のテーブルにデータを挿入するには?
私はbilling_infoアドレスフォームを持っています。ユーザーは請求情報を記入します。情報を記入した後、shipping address is different
と呼ばれるチェックボックスがあります。ユーザーがチェックボックスをオンにした場合、出荷情報が尋ねられます。請求情報はbilling_infoテーブルに格納され、shipping_infoは配送情報テーブルに格納されます。
このチェックボックスをオンにしないと、請求情報のみが請求情報テーブルに保存されます。
<input type="checkbox" name="shipping_status" value="1">
私は、ユーザーがチェックボックスをチェックしない場合にのみbilling_infoのために、データベース内のデータを挿入することができますが、データを挿入することはできないのですが後のチェックボックスをチェックします。 クエリに問題がある可能性があります。私はクエリを試しました
1) START TRANSACTION;
INSERT INTO table1 (column name)VALUES (values);
INSERT INTO table2 (column name) VALUES (values);
COMMIT;
2) BEGIN;
INSERT INTO table1 (column name)VALUES (values);
INSERT INTO table2 (column name) VALUES (values);
COMMIT;
まだデータを挿入することはできません。 これを手伝ってくれませんか?
これはintユーザー情報を格納する正しい方法ですか?
if (isset($_POST['submit'])){
$b_firstname=$conn->real_escape_string(trim($_POST['b_firstname']));
$b_lastname=$conn->real_escape_string(trim($_POST['b_lastname']));
$b_address =$conn->real_escape_string(trim($_POST['b_address']));
$b_country=$conn->real_escape_string(trim($_POST['b_country']));
$b_state=$conn->real_escape_string(trim($_POST['b_state']));
$b_city=$conn->real_escape_string(trim($_POST['b_city']));
$b_pincode=$conn->real_escape_string(trim($_POST['b_pincode']));
$b_mobileno=$conn->real_escape_string(trim($_POST['b_mobileno']));
//$login_user_id=$conn->real_escape_string(trim($_POST['login_user_id']));
//echo $shipping_status=$conn->real_escape_string(trim($_POST['shipping_status']));
/*Shipping address*/
$s_firstname=$conn->real_escape_string(trim($_POST['s_firstname']));
$s_lastname=$conn->real_escape_string(trim($_POST['s_lastname']));
$s_address =$conn->real_escape_string(trim($_POST['s_address']));
$s_country=$conn->real_escape_string(trim($_POST['s_country']));
$s_state=$conn->real_escape_string(trim($_POST['s_state']));
$s_city=$conn->real_escape_string(trim($_POST['s_city']));
$s_pincode=$conn->real_escape_string(trim($_POST['s_pincode']));
$s_mobileno=$conn->real_escape_string(trim($_POST['s_mobileno']));
if (empty($conn->real_escape_string(trim($_POST['shipping_status'])))) {
$shipping_status=0;
}
else{
$shipping_status=1;
}
if ($shipping_status==0) {
echo $sql="INSERT INTO billing_info (b_firstname, b_lastname, b_address, b_country, b_state, b_city, b_pincode, b_mobileno,login_user_id,shipping_status, b_date_of_added) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?)";
// print_r($sql);
$stmt = $conn->prepare($sql);
$stmt->bind_param("ssssssiiiis", $b_firstname, $b_lastname, $b_address, $b_country, $b_state, $b_city, $b_pincode, $b_mobileno,$login_user_id=1,$shipping_status, $date_of_added);
}
else{
// prepare and bind
echo $sql="INSERT INTO billing_info (b_firstname, b_lastname, b_address, b_country, b_state, b_city, b_pincode, b_mobileno,login_user_id,shipping_status, b_date_of_added) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?);INSERT INTO shipping_info (s_firstname, s_lastname, s_address, s_country, s_state, s_city, s_pincode, s_mobileno,b_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ssssssiiiisssssssiii", $b_firstname, $b_lastname, $b_address, $b_country, $b_state, $b_city, $b_pincode, $b_mobileno,$login_user_id=1,$shipping_status, $date_of_added,$s_firstname, $s_lastname, $s_address, $s_country, $s_state, $s_city, $s_pincode, $s_mobileno,LAST_INSERT_ID());
}
$stmt->execute();
$stmt->close();
}
//redirect code
//header('Location: contactus.php');
$conn->close();
}
を選択されているあなたは、私が$ stmt-を使用する必要が言うことを意味>実行(); if-else条件の中で? –
if ... else文の後に変数を入れて、それを実行してください... –
私は既に私のcode.butに同じ問題を追加しました。パーツが動作していてもelseパーツを挿入できない場合のみ –