programing

여러 변수 ID에 대해 여러 개의 정적 값 삽입

starjava 2023. 10. 4. 20:28
반응형

여러 변수 ID에 대해 여러 개의 정적 값 삽입

일부 뒷이야기(내 질문과 직접적인 관련은 없지만 다른 사람이 내 방법을 사용할 수 있음

저는 워드프레스 v3.9.1에서 Advanced Custom Fields 플러그인을 사용하여 작업하고 있습니다.WordPress에서 필요에 따라 포맷된 이전 데이터베이스에서 사용자 지정 값의 CSV 파일(WP Ultimate CSV Importer 플러그인 사용, 무료 버전)을 가져왔습니다(ACF Repeater Fields).플러그인은 훌륭하지만 아직 많은 데이터를 가져올 수 있는 좋은 방법은 없습니다.

리피터 필드는 다음과 같이 데이터베이스에 저장됩니다.

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

즉, 각 post_id에 대해 "beds"라는 하나의 리피터 필드가 있습니다."In" 리피터 필드는 1개의 필드이며, 두 번 반복됩니다.각 필드에는 두 개의 데이터베이스 항목(필드 참조(저장 필드 관리에 사용됨)과 값이 있습니다.설정이 직관적이지는 않지만 WordPress의 기본 테이블 시스템을 중심으로 설계되었습니다.

기출문제

현재 이전 데이터베이스에서 가져온 필드는 다음과 같습니다.

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

추가할 것이 있습니다.

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 및 meta_value는 정적입니다. 필드가 생성된 후에는 삭제할 때까지 동일한 필드_##를 유지합니다.meta_id는 자동 증분입니다.

문제는 제가 200개 이상의 post_id 값을 가지고 있고, 각각은 50개의 정적 항목이 필요하다는 것입니다 - 그것을 하드 코딩하고 싶지 않습니다.다음을 사용하여 필요한 ID를 선택할 수 있습니다.

SELECT DISTINCT ID
FROM  `wp_posts`
WHERE post_type =  "community"

// Returns:
post_id
4697
4698

요컨대

다음을 수행하려면 어떻게 해야 합니까?

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

** 온도용액**

당분간은 PHP를 이용해서 모든 데이터를 버려서 PHPMyAdmin에 올렸습니다.삽입하는 PHP 루프를 작성할 수 있지만, 새로운 PHP 파일(또는 sql)을 업로드할 필요 없이 사용할 수 있는 MySQL 솔루션을 찾고 있습니다.

$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 />';

}

가장 쉬운 방법은 숨겨진 사용자 정의 필드(선두 밑줄)를 메타 값과 함께 가져오는 것이었습니다.만약 당신이 데이터를 그냥 정리하고 싶다면 당신은 a를 사용할 수 있습니다.UNION SELECT당신의 입력으로서INSERT- 당신은 필요하지 않습니다.meta_id, 자동으로 할당됩니다.이 SQL은 삽입 작업을 수행하기 전에 데이터가 이미 존재하는지 확인하지 않으므로 속이지 않도록 주의하십시오.

당신은 그것을 얻을 수 있습니다.post_id것을 를 제공합니다.wp_postmeta에 대해meta_key s". 이용해서.post_id할 수 .SELECTstatement). 되는 됩니다.INSERT.

-- modify the wp_ prefix as needed
INSERT INTO `wp_postmeta` (`post_id`, `meta_key`, `meta_value`)
-- get "_beds" key/value for all entries with meta key of "beds"
SELECT post_id, '_beds' AS meta_key, 'field_53bcfe244a98d' AS meta_value
FROM wp_postmeta WHERE meta_key = 'beds'
UNION 
-- get "_beds_0_other" key/value for all entries with meta key of "beds"
SELECT post_id, '_beds_0_other' AS meta_key, 'field_53c2273053218' AS meta_value
FROM wp_postmeta WHERE meta_key = 'beds'
UNION 
-- get "_beds_1_other" key/value for all entries with meta key of "beds"
SELECT post_id, '_beds_1_other' AS meta_key, 'field_53c2273053218' AS meta_value
FROM wp_postmeta WHERE meta_key = 'beds'
-- order results (you can view what will be inserted if you run the SELECT without the INSERT)
ORDER BY post_id

가지 로 .INSERT 없는 UNION.

언급URL : https://stackoverflow.com/questions/24730376/insert-multiple-static-values-for-multiple-variable-ids

반응형