这是插件运行的代码。它将 CSV 文件数据传递给 MySQL。:
$new_post = array(
'post_title' => $row['Account Name'],
'post_content' => $row['Yellow Page Business Description'],
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'business',
'post_category' => array(0)
);
try
{
$result = wp_insert_post(add_magic_quotes($new_post), true);
if (is_wp_error($result)) {
$output .= '<p style="color:red;">ERROR LOADING CSV FILE</p>';
$output .= "<p style='color:red;'>Failed to import {$new_post['post_title']}</p>";
$output .= '<pre>'.$result->get_error_message().'</pre>';
}
else
{
$post_id = $result;
MySQL 向其报告:
[错误] WordPress 数据库错误 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 '))) AND (cj_posts.post_password = '') AND cj_posts.post_type = 'business' AND ' 在第 1 行中使用正确的语法来查询 SELECT DISTINCT SQL_CALC_FOUND_ROWS cj_posts。 * FROM cj_posts 左连接 cj_term_relationships 为 trel ON (cj_posts.ID = trel.object_id) 左连接 cj_term_taxonomy AS ttax ON (( ttax.taxonomy = 'category') AND trel.term_taxonomy_id = ttax.term_taxonomy_id) 左连接 cj_terms AS TER ON ( ttax.term_id = tter.term_id) LEFT JOIN cj_comments AS cmt ON ( cmt.comment_post_ID = cj_posts.ID ) WHERE 1=1 AND ( ( ((())) AND (cj_posts.post_password = '') AND cj_posts.post_type = '业务' AND (cj_posts.post_status = '发布'
cj_ 是 WordPress 前缀。
我认为这是使用 magic_quotes 不起作用,因此它将字符从 CSV 数据传递到 MySQL 没有正确转义。但我不是 100% 确定,我不确定用什么来代替它。