我瞭解預處理語句是如何工作的,我需要插入200萬行,所以在這種情況下,使用預準備語句對我來說是最好的選擇。我的問題是我在row2和row3上有一個複合唯一鍵,所以我可以在準備好的語句中使用ON DUPLICATE KEY UPDATE,但是如果我希望使用條件,並且只有在最後更新的DATE在比較日期之前更新時纔會更新?如果沒有準備好的語句,我可以在ON DUPLICATE KEY UPDATE中使用一個簡單的IF,但是我似乎無法用預處理語句實現它,因爲變量已被綁定,並且將在創建預處理語句後在循環中進行設置。MYSQL PHP編寫語句
$link = new mysqli(db_host,db_user,db_pass,db_db);
if($link->connect_errno){
echo "Failed to connect to MySQL.";
}
if(!($stmt = $link->prepare("INSERT INTO table(`id`,`lastupdated`,`col1`,`col2`,`col3`,`col4`,`col5`,`col6`,`col7`,`col8`,`col9`) VALUES (?,?,?,?,?,?,?,?,?,?,?)"))){
echo "Prepare failed: (" . $link->errno . ") " . $link->error;
}
如果你可以使用普通的語句中的'IF',你應該能夠做同樣的事情在準備好的聲明。顯示試圖做這個廣告的代碼告訴我們你得到的錯誤。 – Barmar
如果你不得不加載數百萬條記錄,而且它不是一個反覆發生的事情,我會說看看'LOAD DATA INFILE'的mysql語法會快很多。 – Orangepill