我將帖子從我的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注入的影響。如果您的帖子標題/內容包含任何引號('''),則查詢將會中斷。你不檢查錯誤條件,並盲目地認爲查詢成功 - 這是一件非常糟糕的事情。 –