我想将大约10000个新行插入到已包含10000行的现有表中。 我需要获取查询的插入ID,并在循环内的另一个函数中使用该id,如下面的代码所示。
foreach($values as $val){
$sql = "INSERT INTO wp_posts (`post_author`, `post_date`, `post_content`, `post_title`, `post_excerpt`, `post_status`,`post_modified`,`post_type`)
VALUES('".$val[author]."',NOW(),'".$val[content]."','".$val[title]."','".$val[excerpt]."','published',NOW(),'post')";
$result = mysql_query($sql);
$insertid = mysql_insert_id();
add_post_meta($insertid, $val[metakey], $val[metaval], true );
}
我从CSV文件中获取$ values数组的值。截至目前,我每3分钟只能插入20个新行。 无论如何都要加快插入速度吗?
答案 0 :(得分:0)
您可以尝试使用PDO准备好的声明,看看它是否有帮助。
$sql = "INSERT INTO wp_posts (`post_author`, `post_date`, `post_content`, `post_title`, `post_excerpt`, `post_status`,`post_modified`,`post_type`)
VALUES(:author,NOW(),:content,:title,:excerpt,'published',NOW(),'post')";
$pdoStatement = $pdoConnexion->prepare($sql);
foreach($values as $val){
$pdoStatement->bindValue(':author', $val['author'], PDO::PARAM_STR);
$pdoStatement->bindValue(':content', $val['content'], PDO::PARAM_STR);
$pdoStatement->bindValue(':title', $val['title'], PDO::PARAM_STR);
$pdoStatement->bindValue(':excerpt', $val['excerpt'], PDO::PARAM_STR);
$pdoStatement->execute();
$insertid = $pdoConnexion->lastInsertId();
add_post_meta($insertid, $val[metakey], $val[metaval], true );
}