我在一个名为wp_postmeta的表中有数百个条目。
我专注于wp_postmeta中的两列,'meta_key'和'meta_value'
'meta_key'等于'_wp_attachment_metadata'的每个条目,'meta_value'列几乎包含完全相同的信息:
'meta_value'
a:5:{s:5:"width";i:640;s:6:"height";i:427;s:4:"file";s:20:"2015/10/Image-
1.jpeg";s:5:"sizes";a:2:{s:9:"thumbnail";a:4:{s:4:"file";s:20:"Image-1-
300x300.jpeg";s:5:"width";i:300;s:6:"height";i:300;s:9:"mime-
type";s:10:"image/jpeg";}s:6:"medium";a:4:{s:4:"file";s:20:"Image-1-
500x427.jpeg";s:5:"width";i:500;s:6:"height";i:427;s:9:"mime-
type";s:10:"image/jpeg";}}s:10:"image_meta";a:11:
{s:8:"aperture";i:0;s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:""
;s:17:"created_timestamp";i:0;s:9:"copyright";s:0:"";s:12:"focal_length";i:0;s:3
:"iso";i:0;s:13:"shutter_speed";i:0;s:5:"title";s:0:"";s:11:"orientation";i:0;}}
所以基本上,我想执行一些事情,这样如果'meta_key'=='_ wp_attachment_metadata',它将删除'meta_value'APART中的所有值来自“2015/10 / Image-1.jpeg”图像路径(第一行) )。
唯一的问题是'meta_value'中的每一位数据都是微不足道的。所以:20:'不会总是出现在图像路径之前,并且“; s:5:”并不总是会出现,所以如何才能专门提取/保留图像路径值?
EDIT(EXTRA INFO):所有图片路径在开始时都会包含“2015”,有没有办法可以解决我的问题?
编辑2:我还发现所有的图像路径都以“; s:5 ...我应该能够使用它,因为所有图像路径也都以:”引用之前
答案 0 :(得分:1)
好吧,所以这里有一点PHP用于做你想做的事情:
$mysqli = new mysqli("localhost", "user", "password", "db");
$rows = $mysqli->query("SELECT meta_value FROM wp_postmeta WHERE meta_key = '_wp_attachment_metadata'");
$image_paths = array();
while ($row = $result->fetch_assoc()) {
$data = @unserialize($row['meta_value']);
if($data !== false) {
if(isset($data['file'])) {
array_push($image_paths, $data['file']);
}
}
}
// do something with your $image_paths array (like update your new DB)
事情是反序列化数据,并获取文件路径(如果存在)。您可能也想检查mime-type
属性($data['sizes']['thumbnail']['mime-type']
)。