Jer*_*ins 5 mysql sql wordpress
我有一个名为"wp-posts"的表,其中包含"post-content"字段.此字段包含博客文章的文本.我想更改所有记录以替换另一个记录的URL.
想象一下,我可以拥有以下内容:
这是一个测试,某处有像<img src ="http:// oldurl.com /wp-content/somimg.jpg">之类的东西,比如<a href="http:// oldurl.com /something">一个链接</a>."
我想要它
这是一个测试,其中有一些像<img src ="http:// newurl.com /wp-content/somimg.jpg">之类的东西,比如<a href="http:// newurl.com /something">一个链接</a>."
我需要能够为表格中的每个记录更改此内容,而无需在Wordpress中打开每个帖子并手动更改它们.必须有一种方法来做到这一点
小智 19
使用MySQL的replace()函数可以使用简单的SQL语句轻松实现这一点.在我们这样做之前,您绝对应该进行数据库转储或用于备份的任何内容.它不仅仅是正确的事情,而且如果你在替换上犯了错误,可能很难撤消它(是的,你可以回滚,但你可能只会在以后弄清楚你的错误.)
要从MySQL创建数据库转储,您可以运行这样的东西 -
mysqldump -h hostname -u username -p databasename > my_sql_dump.sql
Run Code Online (Sandbox Code Playgroud)
哪里(你可能知道这一点,但为了后代的完整性......) -
现在我们已经解决了这个问题,您可以使用以下命令登录MySQL数据库:
mysql -h hostname -u username -p databasename
Run Code Online (Sandbox Code Playgroud)
只需运行此声明:
UPDATE `wp-posts` SET `post-content` = REPLACE(`post-content`, "http://oldurl.com", "http://newurl.com");
Run Code Online (Sandbox Code Playgroud)
这应该做到!
如果你犯了一个错误,你可以经常重新运行声明,原始文本和新文本被反转(如果新文本 - 在你的情况下是新的URL - 在你进行替换之前文本中尚未存在).有时候这是不可能的,这取决于新文本是什么(再次,在你的情况下不太可能.)无论如何,你总是可以尝试恢复sql转储 -
cat my_sql_dump.sql | mysql -h hostname -u username -p databasename
Run Code Online (Sandbox Code Playgroud)
而就万事大吉了.