我了解准备好的语句是如何工作的,我需要插入 200 万行,所以在这种情况下,使用准备好的语句对我来说是最好的选择。我的问题和问题是我在 row2 和 row3 上有一个复合唯一键,所以我可以在准备好的语句中使用 ON DUPLICATE KEY UPDATE 但是如果我希望使用条件并且仅在 lastupdated DATE 在比较日期之前进行更新时怎么办?如果没有准备好的语句,我只能在 ON DUPLICATE KEY UPDATE 中使用一个简单的 IF,但我似乎无法使用准备好的语句来实现它,因为变量是绑定的,并且将在创建准备好的语句后在循环中设置。
$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;
}