我想從Wordpress數據庫提取數據,所以我可以把它放到一個新的數據庫中,但有幾個問題算出來。這僅僅是一些Wordpress表格的一個小例子。通過Wordpress數據庫表提取數據
wp_posts
id | post_type | post_status |
----------------------------------
1 | portfolio | published | ... other data
wp_postmeta
id | post_id | meta_key | meta_value |
-----------------------------------------------------------------------
1 | 1 | item_submission_title | Some title | ... other data
2 | 1 | item_technology | a:1:{i:0;s:4:"2372";} |
3 | 1 | item_description | Some description |
wp_terms
id | term_id | name |
--------------------------------
1 | 2372 | Some name | ... other data
所以基本上,我必須讓所有的ID從wp_posts其中post_type是組合和post_status是發佈。
使用這些ID我需要得到我的wp_postmeta表中顯示的3個meta_key的meta_value。
item_technology meta_value被序列化,所以我需要然後反序列化它。然後我需要得到它的id(2372)並使用它從wp_terms表中獲得更多的數據。
還有很多我需要做的,但實現上述將讓我瞭解如何最好地做到這一點。我有一種感覺,我可以以某種方式在這裏使用連接,但不確定。目前,我的嘗試是非常無效和不完整的。這是我目前擁有的。
$conn = Database::getInstance();
$ids = getIDs($conn);
$dataArray = array();
foreach ($ids as $row) {
$data = getData($conn, $row['id']);
$dataArray[] = $data;
}
function getIDs($conn) {
$query = "SELECT `id` FROM `wp_posts` WHERE `post_type` = \"portfolio\" and `post_status` = \"publish\"";
$sql = $conn->dbc->prepare($query);
$sql->execute();
$row = $sql->fetchAll();
return $row;
}
function getData($conn, $id) {
$query = "SELECT `meta_value` FROM `wp_postmeta` WHERE `post_id` = $id AND `meta_key` = \"item_submission_title\"";
$sql = $conn->dbc->prepare($query);
$sql->execute();
$row = $sql->fetchAll();
return $row;
}
什麼是實現我所追求的最佳方式?
感謝