我有兩個表是billing_info, shipping_info
。 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->的execute();在if-else的情況下? –
把你的變量放在if ... else語句之後,然後執行它... –
我已經添加了我的代碼,但仍然是同樣的問題。只有部分工作,但不能插入其他部分 –