2013-08-07 78 views
0

你被允許用mysqli做這樣的事嗎?我越來越沒有什麼打算。雙插入問題MYSQLI

// Place the transaction into the database 
    $sql = "INSERT INTO transactions (product_id_array, email, first_name, last_name, payment_date, mc_gross, payment_currency, txn_id, receiver_email, payment_type, payment_status, txn_type, payer_status, address_street, address_city, address_state, address_zip, address_country, address_status, notify_version, verify_sign, payer_id, mc_currency, mc_fee, ip, username)  
     VALUES('$custom','$payer_email','$first_name','$last_name','$payment_date','$mc_gross','$payment_currency','$txn_id','$receiver_email','$payment_type','$payment_status','$txn_type','$payer_status','$address_street','$address_city','$address_state','$address_zip','$address_country','$address_status','$notify_version','$verify_sign','$payer_id','$mc_currency','$mc_fee','$ip','$user_name')"; 
     $uid = mysqli_insert_id($db_conx); 
      $sql .= "INSERT INTO courseprogress (id, product_id_array, email, username) VALUES ('$uid','$custom','$payer_email','$username')"; 
      $query = mysqli_query($db_conx, $sql); 
    // 

我試圖使用兩個單獨的語句這樣

$sql = "INSERT INTO transactions (product_id_array, email, first_name, last_name, payment_date, mc_gross, payment_currency, txn_id, receiver_email, payment_type, payment_status, txn_type, payer_status, address_street, address_city, address_state, address_zip, address_country, address_status, notify_version, verify_sign, payer_id, mc_currency, mc_fee, ip, username)  
     VALUES('$custom','$payer_email','$first_name','$last_name','$payment_date','$mc_gross','$payment_currency','$txn_id','$receiver_email','$payment_type','$payment_status','$txn_type','$payer_status','$address_street','$address_city','$address_state','$address_zip','$address_country','$address_status','$notify_version','$verify_sign','$payer_id','$mc_currency','$mc_fee','$ip','$user_name')"; 
$query = mysqli_query($db_conx, $sql); 
//added as addition for newsletter signup below 
      $uid = mysqli_insert_id($db_conx); 
      $sqlemail = "INSERT INTO courseprogress (id, product_id_array, email,username) VALUES ('$uid','$custom','$payer_email','$username')"; 
      $query = mysqli_query($db_conx, $sqlemail); 
    // 

我只能夠得到第一要經過儘管在較低嘗試...任何建議?

+0

看起來沒問題。在這種情況下,您從第二個查詢中得到的錯誤是什麼?檢查結果是否有錯誤。另外,你很可能容易受到SQL注入的攻擊。確保您的字符串正確轉義或(更好)使用參數化語句。 – viraptor

+0

@viraptor感謝您的信息...我的問題是包含此腳本不會在訪問頁面時發生。它發生在我的網站(不是技術上)。它是IPN的一部分,用戶在PayPay付款時會觸發。所以我不能得到的錯誤,除非它是PHP本身...沒有mysqli statemtns。我所知道的是第二個陳述沒有被插入。 – Chris

+0

你可以打開你的php.ini中的錯誤和警告日誌記錄。無論您是通過cli還是web服務器運行腳本(我不明白您的意思是哪種情況),任何問題都會被記錄下來。或者,您可以自己記錄錯誤。檢查'mysqli_query(...)'的結果是否爲=== FALSE。如果是,打印/記錄http://www.php.net/manual/en/mysqli.error.php的結果 - 這會告訴你哪裏出了問題。 – viraptor

回答

0

你有錯誤的地方$ db_conx數據,它需要在同一個語句。 您是否升級了sql?...我做到了,我不得不重新構建我創建的整個項目。 創建一個保存數據或全局數據的函數,並且每次在聲明或函數中重新聲明$ db_conx。