我在localhost上的网站上工作,我的数据库中有一个字段,我存储了一些图片的绝对网址,所以所有记录都像http://localhost/my_project/images/picture.jpg
,现在在我的网站上这个记录不起作用,我应该改变所有记录都是这样的' http://www.mysite.com/images/picture.jpg',所以我找到了replace
命令用于mysql,但是这个命令将替换字段的所有部分:
UPDATE tablename SET tablefield = replace(tablefield, "findstring", "replacestring");
如何使用phpmyadmin更改记录中的http://localhost/
?
答案 0 :(得分:1)
首先,您应该从所有网址中删除域名。简单地使用/images/picture.jpg
将允许它在所有主机上运行。
要全局替换它,我建议做一个mysqldump并在文本编辑器中打开文件,替换字符串,然后将其导回数据库。假设您的数据库中没有任何序列化字符串(wordpress)。
答案 1 :(得分:0)
要简单地删除'http://localhost'
前缀,以便按照@Rob's answer中的建议使用无主机绝对路径:
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
提供的UDF。