2017-11-04 41 views
0

我有兩個表是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(); 
} 

回答

-2

bind_params後,必須要插入計費信息,以便進行計費信息,如果語句不應該在插入查詢每次插入此

$firstname = "John"; 
$lastname = "Doe"; 
$email = "[email protected]"; 
$stmt->execute(); 
+0

你的意思是說我必須使用$ stmt->的execute();在if-else的情況下? –

+0

把你的變量放在if ... else語句之後,然後執行它... –

+0

我已經添加了我的代碼,但仍然是同樣的問題。只有部分工作,但不能插入其他部分 –

0
 if (empty($conn->real_escape_string(trim($_POST['shipping_status'])))) { 
     $shipping_status=0; 
$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{ 
    $shipping_status=1; 
$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()); 
    } 
1

默認情況下,。

$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); 
     $stmt->execute(); 
    $stmt->close(); 

航運狀況選擇

if ($shipping_status==1) { 
     $sql="INSERT INTO shipping_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); 
$stmt->execute(); 
    $stmt->close(); 
     } 
+0

你的邏輯解決了我的80%問題。現在我必須添加訂單詳情,那麼我應該在查詢中添加它們的位置? –

+0

如果它在另一個表中,則可以在查詢之外插入它。 –

相關問題