2013-07-01 2 views
0

Есть некоторые проблемы в WordPresspost_meta массива его посылает неправильные детали в базе данных, так что я хочу, чтобы изменить результат update_post_meta в базе данных в настоящее время я использую ниже после меты:изменения результата update_post_meta в базе данных

update_post_meta($post_id, '_wpsc_vendors', array(19,'enabled',true,rate,30)); 

, которые генерируют этот пост-мета ключ и значение:

key: _wpsc_vendors 
value: a:5:{i:0;i:19;i:1;s:7:"enabled";i:2;b:1;i:3;s:4:"rate";i:4;i:30;} 

теперь я хочу, чтобы изменить значение результата тоже это в базе данных:

a:1:{i:19;a:2:{s:7:"enabled";s:4:"true";s:4:"rate";s:2:"30";}} 
+0

Я не уверен в понимании. Вы хотите напрямую изменить его в базе данных или хотите снова вызвать update_post_meta с разными параметрами? – leticia

+0

update_post_meta снова с разными параметрами, поэтому результат будет равен: 1: {i: 19; a: 2: {s: 7: "enabled"; s: 4: "true"; s: 4: "rate"; s: 2: «30»;}} – Corlax

ответ

3

Данные:

array(19,'enabled',true,rate,30) 

при serialized на WordPress превращается в следующие:

a:5:{i:0;i:19;i:1;s:7:"enabled";i:2;b:1;i:3;s:4:"rate";i:4;i:30;} 

смысл:

: с 5: является массив 5 Пункты

i: 0; i: 19; - первый элемент с индексом 0 "i: 0", значение целое число 19

i: 1; s: 7: "enabled"; если элемент с индексом 1, строка с 7 символов «включен»

... и так далее

Сериализованный значение, которое вы хотите не кажется, действительно:

а: 1: {я : 19; a: 2: {s: 7: "enabled"; s: 4: "true"; s: 4: "rate"; s: 2: "30";}}

Возможно, это поможет вы (проверено с помощью сериализации функции PHP):

$b = array('19'=>array("enabled","true","rate","30")); 
echo serialize($b); 

// Prints: 
a:1:{i:19;a:4:{i:0;s:7:"enabled";i:1;s:4:"true";i:2;s:4:"rate";i:3;s:2:"30";}} 

Если вы хотите хранить/обновить значение непосредственно в таблице, вы можете сделать последующие:

global $wpdb; 
$sql = "UPDATE $wpdb->postmeta SET meta_value = '$meta_value' WHERE meta_key = '_wpsc_vendors' AND post_id = $post_id"; 
$wpdb->query($sql); 

Но я не рекомендую хранить вручную измененные данные, которые будут рассматривать в качестве сериализации, или сохранить непосредственно PostMeta таблицы вместо использования функции update_post_meta.

+0

может быть там, где есть способ сделать это http://stackoverflow.com/questions/2746589/how-to-create-an-array-from-database, пожалуйста, проверьте – Corlax

+0

, есть ли способ для удаления i: 0, i: 1, i: 2, i: 3 – Corlax

+0

Вы также можете получить массив из этого значения, используя unserialize http://php.net/manual/en/function.unserialize.php – leticia

Смежные вопросы