Niektóre z powrotem historia (nie bezpośrednio odnoszące się do mojego pytania, ale może ktoś inny może korzystać z metody)wstawić wiele wartości statyczne dla wielu identyfikatorów zmiennych
pracuję w WordPress v3.9.1 za pomocą wtyczki Zaawansowane Pola niestandardowe. Zaimportowałem plik CSV o niestandardowych wartościach (za pomocą wtyczki WP Ultimate CSV Importer, wersja darmowa) ze starej bazy danych sformatowanej tak, jak potrzebuję w WordPress z jednym wyjątkiem - ACF Repeater Fields. Wtyczka jest świetna, ale nie ma jeszcze dobrej metody importowania mnóstwa danych.
Repeater pola są przechowywane w bazie danych, co następuje:
meta_id post_id meta_key meta_value
3894 4697 beds 2
3895 4697 _beds field_53bcfe244a98d
4051 4697 _beds_0_other field_53c2273053218
4050 4697 beds_0_other 1
4051 4697 _beds_1_other field_53c2273053218
4050 4697 beds_1_other 3
5894 4698 beds 2
5895 4698 _beds field_53bcfe244a98d
5051 4698 _beds_0_other field_53c2273053218
5050 4698 beds_0_other 1
5051 4698 _beds_1_other field_53c2273053218
5050 4698 beds_1_other 3
To; dla każdego post_id jest jedno pole Repeatera o nazwie "łóżka". "W" pole wzmacniacza to 1 pole, powtórzone dwukrotnie. Każde pole ma 2 wpisy do bazy danych - odniesienie do pola (używane do zarządzania polami zapisu - zawsze takie same dla każdego pola) i wartości. Nie tak intuicyjny w konfiguracji, jak to tylko możliwe, ale został zaprojektowany w oparciu o domyślny system tabel WordPress.
Rzeczywiste pytanie
Teraz mam pola importowane z mojej starej bazy danych, która wygląda tak:
meta_id post_id meta_key meta_value
#### 4697 beds 2
#### 4697 beds_0_other 1
#### 4697 beds_1_other 3
#### 4698 beds 2
#### 4698 beds_0_other 1
#### 4698 beds_1_other 3
muszę dodać
meta_id post_id meta_key meta_value
#### 4697 _beds field_53bcfe244a98d
#### 4697 _beds_1_other field_53c2273053218
#### 4697 _beds_0_other field_53c2273053218
#### 4698 _beds field_53bcfe244a98d
#### 4698 _beds_1_other field_53c2273053218
#### 4698 _beds_0_other field_53c2273053218
meta_key i meta_value są statyczne - nigdy się nie zmieniają (po utworzeniu pola zachowuje ono to samo pole _ ## do momentu usunięcia). meta_id to auto increment.
Problem polega na tym, że mam ponad 200 wartości post_id, z których każda potrzebuje 50 statycznych wpisów - nie chcąc tego napisać. Mogę wybrać wymagane identyfikatory przy użyciu następujących:
SELECT DISTINCT ID
FROM `wp_posts`
WHERE post_type = "community"
// Returns:
post_id
4697
4698
W skrócie
Jak można wykonać następujące czynności:
INSERT INTO `table` (`meta_id`, `post_id`, `meta_key`, `meta_value`)
VALUES
// foreach related distinct ID in wp_posts
(NULL, 'ID', "_beds", "field_53bcfe244a98d"),
(NULL, 'ID', "_beds_0_other", "field_53c2273053218"),
(NULL, 'ID', "_beds_1_other", "field_53c2273053218")
// end foreach
** rozwiązaniem temp **
Dla w tym momencie po prostu wyrzuciłem wszystkie dane używając PHP & przesłałem je w PHPMyAdmin. Mógłbym napisać pętlę PHP, która wstawi, ale szukam rozwiązania MySQL, którego mogę użyć bez potrzeby przesyłania nowego pliku php (lub sql).
$ids = array("4697", "4698");
echo '
INSERT INTO `table` (`meta_id`, `post_id`, `meta_value`, `meta_key`)
VALUES<br />';
foreach ($ids as $id){
echo '
(NULL, "'. $id .'", "1", "beds"),
(NULL, "'. $id .'", "field_53bcfe244a98d", "_beds"),
(NULL, "'. $id .'", "field_53c2273053218", "_beds_0_other"),
<br />';
}