我将帖子从我的WP博客移动到一个自定义网站。我制作了一个脚本来从WP SQL转储中提取需要的列,然后将其循环到新创建的表中。 WP表和我的数据库以及自定义表都使用UTF-8。我已经计算了我得到的行,在执行循环插入新信息之前和之后。帖子的数量是427,这是正确的帖子数量。但是,在数据库中只有234个帖子被插入,我怀疑它是MySQL无法插入某些帖子,但我不知道为什么。下面是代码:MySQL不插入所有行
<?php
$con = mysql_connect('localhost', 'root', 'PASSWORD');
$select = mysql_select_db('blog');
mysql_query("
CREATE TABLE posts (
id int(9) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
title varchar(250) NOT NULL,
content longtext NOT NULL,
date varchar(90) NOT NULL,
deleted int(1) NOT NULL
)") or die(mysql_error());
$query = mysql_query("SELECT post_date, post_title, post_content FROM sspe_posts WHERE post_type = 'post' AND post_status = 'publish'");
$i = 0;
while ($row = mysql_fetch_array($query)) {
$oldPosts[$i]['title'] = $row['post_title'];
$oldPosts[$i]['date'] = $row['post_date'];
$oldPosts[$i]['content'] = $row['post_content'];
$i++;
}
$size = count($oldPosts);
for ($x = 0; $x < $size; $x++) {
$title = $oldPosts[$x]['title'];
$content = $oldPosts[$x]['content'];
$date = $oldPosts[$x]['date'];
$query = mysql_query("INSERT INTO posts (title, content, date, deleted) VALUES ('$title', '$content', '$date', 0)");
}
echo $x;
检查每个迭代的'mysql_error()':if(!$ query){echo mysql_error();}'这将清楚哪些失败以及为什么。 –
检查您的脚本是否超过时间限制(默认为30秒) –
您的插入查询容易受到sql注入的影响。如果您的帖子标题/内容包含任何引号('''),则查询将会中断。你不检查错误条件,并盲目地认为查询成功 - 这是一件非常糟糕的事情。 –