0

我在本地主机上的网站上工作,我的数据库中有一个字段,我存储一些图片的绝对 url,所以所有记录都像http://localhost/my_project/images/picture.jpg现在在我的网站上这些记录不起作用,我应该将所有记录更改为像这样' http: //www.mysite.com/images/picture.jpg ',所以我找到replace了 mysql 的命令,但是这个命令将替换字段的所有部分:

UPDATE tablename SET tablefield = replace(tablefield, "findstring", "replacestring");

如何http://localhost/使用 phpmyadmin 更改我的记录?

4

2 回答 2

1

首先,您应该从所有 url 中删除域名。简单的使用/images/picture.jpg将允许它在所有主机上工作。

要全局替换它,我建议执行 mysqldump 并在文本编辑器中打开文件,替换字符串,然后将其导入数据库。这是假设您的数据库中没有任何序列化字符串(wordpress)。

于 2013-07-07T05:36:34.533 回答
0

要简单地去除'http://localhost'前缀,以便按照@Rob 的回答中的建议使用无主机绝对路径:

UPDATE tablename
SET    tablefield = SUBSTR(tablefield FROM 17)
WHERE  tablefield LIKE 'http://localhost/%'

sqlfiddle上查看。

要替换'http://www.mysite.com'为原始问题中的要求:

UPDATE tablename
SET    tablefield = CONCAT('http://www.mysite.com', SUBSTR(tablefield FROM 17))
WHERE  tablefield LIKE 'http://localhost/%'

sqlfiddle上查看。

当然,这些答案都没有使用问题标题中要求的正则表达式(尽管它们确实使用简单的模式匹配);要使用正则表达式模式替换,您需要安装和使用由lib_mysqludf_preg.

于 2013-07-07T06:09:56.243 回答