2016-10-04 6 views
1

私のWordPressサイトの投稿テーブルに添付ファイルを取り込むために書いたコードがいくつかあります。データベースクエリの結果をPHPのテキストファイルに書き込む

最初の関数は結果をプルダウンしますが、テキストファイルに書き込むことはできません。

ファイルの作成は問題なく、エラーは発生しません。そして、コードが動作している、私はログを取得していないだけです。私は、それが移動する準備が整っているファイルを知りたい。

これは私が何をしないのです、私のプラグインから問題になっている機能

function getPostsToMove($baseurl){ 

    $baseurl = $baseurl.'/%/%/%.%'; 
    $myfile = fopen("/websites/site.dev/wp-content/uploads/newfile.txt", "w") or die("Unable to open file!"); 

    global $wpdb ; 

    return $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE `guid` not 
    like '$baseurl' and `post_type` = 'attachment' ORDER BY post_date DESC LIMIT 1000"); 

    fwrite($myfile, $baseurl); 
    fclose($myfile); 
} 

のですか?

EDIT-注文が間違っていました。以下はそうだった。しかし、私は明らかに私のリターンからデータを取得していません。それを配列に変換する必要がありますか?

新しいコード

function getPostsToMove($baseurl){ 

$baseurl = $baseurl.'/%/%/%.%'; 
    $myfile = fopen("/websites/site.dev/wp-content/uploads/newfile.txt", "w") or die("Unable to open file!"); 

    fwrite($myfile, $output); 
    fclose($myfile); 
    global $wpdb; 
    $output = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE `guid` not 

like '$baseurl' and `post_type` = 'attachment' ORDER BY post_date DESC LIMIT 1000"); 

return $output; 

} 
+3

'return'はリターンを意味します...' return'の後には何も実行されません。 – Zimmi

+0

はい、関数の最後に 'return'を入れてみてください。 – fugitive

+0

これは、移動するファイルを収集する最初の関数です。クエリが実行される前にファイルを書き込んだり閉じることはできますか? –

答えて

2

あなたの関数は、ファイルへの書き込みを試みた後、クエリを取得することが表示されます。

データを取得してファイルに書き込んだ後、アプリケーションでさらに使用するためにデータを返す予定があるようですが、私は以下のように提案します。

function getPostsToMove($baseurl){ 
    $baseurl = $baseurl.'/%/%/%.%'; 
    $myfile = fopen("/websites/site.dev/wp-content/uploads/newfile.txt", "w") or die("Unable to open file!"); 

    // Query the data and assign the variable before writing 
    global $wpdb; 
    $results = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE `guid` not like '$baseurl' and `post_type` = 'attachment' ORDER BY post_date DESC LIMIT 1000"); 

    // json_encode() to turn the retrieved array into a JSON string for writing to text file 
    $output = json_encode($results); 

    // write the file 
    fwrite($myfile, $output); 
    fclose($myfile); 

    // return the result (array) for further use in application 
    return $results 
} 
+1

json_encode()は、配列をテキストファイルに書き込む1つの方法です。もちろん、情報をより読みやすい方法で解析し、それに従って書き込むことができます。しかし、それはこの質問の範囲外です – Luke

+0

ありがとうございます!。それが私が欠けていたものです。実際の解析と出力。 そのトピックへのリンクやリソースがある場合は、より良い方法を学びたいと思います。将来を知ることは良いことです。 –

+0

[this](http://www.webdeveloper.com/forum/showthread.php?235140-Formatting-a-line-ready-string-(json)-into-human-readable-format)のようなものは、アレイを「人間が判読可能な」形式にすることをより深く掘り下げるための優れたリソースです。 – Luke

関連する問題