2016-08-18 4 views
0

私は他のCMSからワードプレスにウェブサイトを移動しようとしています。この古いCMSのmySql DBにアクセスできます。だから私は古いウェブサイトから新しいウェブサイトへのニュースを入手しようとしています。これは私のコードです:wp_insert_post他のMYSQL DBから、ワードプレスエラーが発生しました

<?php 

error_reporting(E_ALL); 
ini_set('display_errors', 1); 



$hostname = "XXX.XX.XXX.XX"; 
$username = "myusername"; 
$password = "mypassw"; 
$dbName = "mydb"; 

$root = 2; //category on old website 
$thema = 10; //subcategory on old website 

$category = 17; //category on new website with wordpress 

$enabled = '1'; //only enabled new on old website 
$user_id = 1; //admin id in wordpress 


$all = 0; 


if(isset($_GET['offset']) && isset($_GET['all'])) 
{ 
    $offset = $_GET['offset']; 
    $all = $_GET['all']; 
}else{ 
    $offset = 0; 

    //Getting number of all news... 
    try { 
     $dbh = new PDO('mysql:host='.$hostname.';dbname='.$dbName, $username, $password); 
     foreach($dbh->query("SELECT * FROM `news` WHERE `root` = ".$root." AND `thema` = ".$thema." AND `enabled` = '1'") as $row) { 
      $all++; 
     } 
     $dbh = null; 
    } catch (PDOException $e) { 
     print "Error!: " . $e->getMessage() . "<br/>"; 
     die(); 
    } 
} 
if($offset>$all) 
{ 
    echo "Ready..."; 
    exit(); 

} 

echo "All:".$all."<BR>"; 


    try { 
     $dbh = new PDO('mysql:host='.$hostname.';dbname='.$dbName, $username, $password); 
     $dbh->query("SET NAMES 'cp1251'"); 
     foreach($dbh->query("SELECT * FROM `news` WHERE `root` = ".$root." AND `thema` = ".$thema." AND `enabled` = '1' ORDER BY `news`.`id` ASC LIMIT ".$offset.", 30 ") as $row) { 

      $new_post = array(
       'post_title' => $row['title'], 
       'post_content' => $row['text'], 
       'post_status' => 'publish', 
       'post_date' => date('Y-m-d H:i:s', $row['created']), 
       'post_author' => 1, 
       'post_type' => 'post', 
       'post_category' => array($category) 
      ); 

      $post_id = wp_insert_post($new_post, true); //insert post (returns 0) 

      echo "<pre>"; 
       print_r($post_id); 
      echo "</pre>"; 

      echo $_POST['title']."<BR>done...<BR>";  
     } 
     $dbh = null; 
    } catch (PDOException $e) { 
     print "Error!: " . $e->getMessage() . "<br/>"; 
     die(); 
    } 


$offset = $offset + 31; 
echo 'wait..<meta http-equiv="refresh" content="5; url=get.php?offset='.$offset.'&all='.$all.'">'; 

このコードを開始すると、WP_Error - "データベースに挿入できませんでした"が表示されます。 しかし私は理解できません、何が間違っています。 できれば助けてください:

+0

あなたのユーザーに書き込み権限がありますか?あなたのデータベースに次のクエリを送ることでチェックできます: 'SHOW GRANTS;'。 – bufh

+0

これは行いません{foreach($ dbh-> query( "SELECT * FROM' news' WHERE 'root' ="。$ root。 "AND' thema' = "。$ thema" AND 'enabled' = '1' ORDER BY 'news'.'id' ASC LIMIT"。$ offset。 "、30")$行として){ }}。それは何か間違った結果を返すことがほぼ確実ですので、最初にクエリ結果を変数に代入してデバッグしてください。 – kkarpieszuk

+0

MySqlユーザーは、私のWordPressのテーブルにすべての権限があるデータベースへの接続に使用します。しかし、スクリプトでは、まずリモートのmysqlホストに接続し、リモートのmysqlデータベースから情報を取得します – Evgeny

答えて

0

この行を削除すると問題が解決しました。$ dbh-> query( "SET NAMES 'cp1251'");

関連する問題