需要更改MySQL数据库中的值,遇到SQL语言问题

时间:2015-11-17 11:17:09

标签: php mysql wordpress phpmyadmin wordpress-plugin

我正在开发一个网站,我需要做很多手工工作(点击页面和设置模板等),所以我想为什么不自动化它。我已登录PHPMyAdmin并找到了我想要更改的MySQL数据库中的位置。

它由两部分组成,即' wp_postmeta'和' wp_posts'。我有一个包含所有' post_id'的文本文件。我想要访问的内容以及我想要将页面更改为的内容。如有必要,我可以将其转换为arrat。

SELECT * 
FROM `wp_postmeta` 
WHERE `post_id` =x
AND `meta_key` LIKE '_wp_page_template'
AND `meta_value` LIKE 'template-blank-4.php'

SELECT*
FROM `wp_posts`
WHERE `post_id` =x

我尝试做的是做一个循环或一系列if / else语句,可以访问我的帖子编号并设置其页面内容。我将分别执行两个操作(分别设置内容和设置页面模板)。 我该如何开始?

这是我想要达到的极其粗糙的问题;

Array =(1,2,3,4...1200)
Array2=("string1", "string2", "string3"..."string1200")
for (array[i], i<1200) {
SELECT*
from 'wp_posts'
where post_id=i
set post_content="array2[i]"
SELECT*
from 'wp_postmeta'
where post_id=i
AND `meta_key` LIKE '_wp_page_template'
SET `meta_value` TO 'template-blank-4.php'
}

任何有关这方面的帮助都会有很大的帮助

1 个答案:

答案 0 :(得分:0)

就像Bvcm在评论中所说,你不应该通过phpMyAdmin这样做,而是使用PHP脚本。由于您似乎想要进行数据导入,我认为mysqli extension对您来说是最简单的方法。没有必要使用WP_Query unsless你想在wordpress中重用这个导入,例如一个插件。 如果可能,请将您的ID和内容放在一个数组中:

$data = array(1 => "string1", 2 => "string2", 3 => "string3", ... 1200 => "string1200")

如果您已经这样做,您的PHP代码可能如下所示:

$link = mysqli_connect("localhost", "my_user", "my_password", "world");
foreach ($data as $id => $content) {
    $query_posts = "UPDATE wp_post
             SET post_content = '".$content."'
             WHERE post_id = ".$id;
    mysqli_query($link, $query_posts);
    $query_meta = "UPDATE wp_postmeta
             SET meta_value = 'template-blank-4.php'
             WHERE post_id = ".$id."
             AND meta_key = '_wp_page_template'";
    mysqli_query($link, $query_meta);
}
mysqli_close($link);