2014-12-27 3 views
0

테이블에 데이터를 삽입하려고합니다. 검색 조건을 사용하고있는 동안 FetchRow를 사용하여 행의 데이터를 가져오고이 행을 테이블에 직접 삽입하려고합니다. 나는 this link에 테이블 구조를 부여했다. RETS 검색 쿼리에서 테이블에 데이터를 삽입하는 방법은 무엇입니까?

동안 상태에서 테이블에 삽입 값에 대한 코드

은 여기에 있습니다 :

require_once (ABSPATH . 'wp-admin/includes/upgrade.php'); 
$query = "(922=MIAMI), (131=2014-12-16+)"; 
    $search = $rets->SearchQuery("Property", $class, $query, array("SystemName" => 1, 'Limit' => 1)); 

      if ($rets->NumRows($search) > 0) 
      { 
         $fields_order = $rets->SearchGetFields($search); 
         $this_record = array(); 
         while ($record = $rets->FetchRow($search)) 
         { 

         foreach ($fields_order as $fo) 
         { 
         echo $this_record[] = $record[$fo]; 
         } 

         $comma_fields_order = implode(",", $fields_order); 
         $comma_record = implode(",", $this_record); 

         echo $dfsdf = "INSERT INTO rets_property_2 (".$comma_fields_order.") VALUES (" .$comma_record.")"; 

         dbDelta($dfsdf); 

         } 

      } 

나는 이것이 삽입 쿼리 에코 경우

INSERT INTO rets_property_2 (sysid,1,10,11,13,14,17,19,21,22,25,28,29,30,31,39,45,47,53,54,56,57,59,61,62,63,66,69,71,73,74,75,76,80,92,93,97,98,99,100,102,106,109,110,111,113,114,115,125,126,127,128,129,131,134,136,137,143,144,149,150,157,158,160,161,164,165,167,178,180,181,188,190,193,194,195,206,207,214,223,225,226,227,229,230,232,242,245,246,247,248,250,252,261,263,264,266,267,268,274,275,283,294,295,296,314,315,319,320,321,322,324,326,327,328,329,330,331,332,333,334,335,336,337,338,341,342,347,348,351,352,353,354,355,356,360,361,362,363,364,366,367,368,369,370,372,373,374,375,376,881,886,891,893,894,922,924,1088,1218,1223,1329,1333,1335,1337,1339,1358,1410,1462,1463,1464,1465,1473,1485,1486,1487,1488,1490) VALUES (305578689,Condo/Co-Op/Villa/Townhouse,33131,,,,3003,42,None,,4,,,,Entry Level,Miami Board of Realtors,0,,Cbs Construction,,,Electric Cooling,,Miami-Dade County,,,,ASIA CONDOMINIUM,,,,,,2008-06-12T14:19:47,5,2630,,,,,2,,1,Electric Heat,Condo,9,Yes,ASIA IS BRICKELL KEY ISLAND'S PREMIER LUXURY BLDG. W/ ONLY 123 UNITS, PRIVATE ELEVATORS, SPECTACULAR VIEWS AND MUCH MORE.,,,,,3813,2014-12-23T09:16:55,EWM 09,0648464,6000000,,Daysi Morey,,1,M1242705,,No,,Vacant,EWM Realty International,305-329-7600,,Maximum 20 Lbs,Yes,,0043,,Funding,Yes,5000000,T,EXOTIC LUXURY AND STRIKING DESIGN MAKES ASIA THE # 1 RESIDENCE FOR THE MOST DISCRIMINATING OWNER. SMART TECHNOLOGY, PRIVATE ELEVATORS, FLOOR TO CEILING WINDOWS, BREATHTAKING VIEWS OF BISCAYNE BAY, BAYSIDE, MIAMI RIVER AND MIAMI;S EXHUBERTANT SKYLINE. 12' CIELINGS,MARBLE BATHROOMS, GOURMET CHEF STYLE KITCHEN, LUXE BATH WITH FRENCH VANILLA IMPORTED MARBLE AND MUCH MORE MAKES THIS REMARKABLE RESIDENCE A SANCTUARY NESTLED IN BISCAYNE BAY. ALLOW 24 HOURS NOTICE FOR SHOWINGS.,,,6,6,,,0,,2014-01-24T10:02:22,Active-Available,BRICKELL KEY BLVD.,900,,,4663,Tax Reflects City & County Tax,New Construction,,,42,,0,2007,,None,Yes,Bay Front,2008,Under Construction,Bike/Jog Path,Elevator,0,No Approvals,,,ASIA CONDOMINIUM,,No,,,,Dishwasher,Dryer,Microwave,Electric Range,Refrigerator,Other Equipment/Appliances,Open Balcony,,30,Wood Floors,,Condominium,Elevator,Foyer Entry,Other Interior Features,0,All Amenities,Building Exterior,Cable Tv,1920,365,,,1,1 Assigned Space,2 Or More Spaces,,,0,Other Restrictions,,Elevator Secure,Garage Secured,Lobby Secured,,Condo 5+ Stories,34,Other,Condo,Corner Unit,High Rise,123,,Bay,,900 BRICKELL KEY BLVD. # 3003,,,,0,Miami,Florida,,,http://instatour.propertypanorama.com/instaview/mia/M1242705,2009-02-19T16:00:26,,,,ASIA CONDO UNIT 3003,1573.564,No HOPA,,,2389,No,No,No,No,900 BRICKELL KEY BLVD. 3003,Yes,) 

그러나 아무것도가 표에 삽입됩니다. 내가 틀린 곳? fetchrow에 의해 테이블에 주어진 전체 행을 직접 삽입하는 다른 방법이 있습니까?

올바른 방향을 보여주십시오. 데이터 유형, 숫자 및 varchar 문제가 있다고 생각합니다. 그렇다면 배열에서 데이터가 오는 삽입 쿼리를 어떻게 포맷 할 수 있습니까?

삽입 검색어가 잘못되었습니다. 나는이

INSERT INTO `rets_property_2` ( `sysid` , `1`) 
VALUES (526252, 'dsfsdfsdf') 

을 시도 할 경우

이 잘 작동합니다. 하지만 질문은 값이 문자열이고 'somestringvalue'인 경우 배열에서 값을 가져올 수 있으며 값이 정수이면 정수 값만 배열에 래핑하는 방법은 무엇입니까?

+0

이 질문에 테이블 정의의 관련 부분을 삽입하십시오. 테이블 10 kB ...?! –

+0

오케이, 그 후에이 문제가 해결 되나요? 내 코드는 괜찮습니까? –

+0

삽입 쿼리가 실제로 SQL처럼 보이지 않습니다! 이거 어디서 얻은거야? 적어도 30 초간 문서에서 보셨나요? 나는 추측하지 않는다 !!! –

답변

1
$query = "(922=MIAMI), (131=2014-12-16+)"; 
    $search = $rets->SearchQuery("Property", $class, $query, array("SystemName" => 1, 'Limit' => 5)); 
    if ($rets->NumRows($search) > 0) { 


       $fields_order = $rets->SearchGetFields($search); 

       while ($record = $rets->FetchRow($search)) { 

        //var_dump($fields_order); 
         foreach ($fields_order as $fo) { 


          if(is_numeric($record[$fo])){ 
           $valuesd[] = $record[$fo]; 
          }else{ 

           $onlyconsonants = str_replace("'", "", $record[$fo]); 
           $valuesd[] = "'".$onlyconsonants."'"; 
          } 

         } 


        $comma_fields_order = "`".implode("`,`", $fields_order)."`"; 
        $valuestring = implode(",", $valuesd); 

        $wpdb->query("INSERT INTO rets_property_2 (".$comma_fields_order.") VALUES (".$valuestring.")"); 

         unset($valuesd); 
         $valuesd = array(); 




       } /* end while */ 

     } /* end if of number of row */ 
0

나는 데이터베이스 테이블 열 이름 대신 SystemName에의 DBNAME 열 이름을 사용하는 것이 좋습니다 것입니다.

진술서를 준비/실행하려면 PDO을 사용하는 것이 좋습니다.

아래의 예는 당신을 따라 도움이 될 것입니다

<?php 
$sysid = '1234' 
$property_1 = '1111 main' 
$stmt = $db->prepare("INSERT INTO table_name(`sysid`, `property_1`) VALUES(?, ?)"); 
$stmt->execute(array($sysid, $property_1)); 
+0

감사합니다. –

+0

도움이 되었습니까? –

+0

내 코드 예제에서 문제 대답을 해결할 수 있었습니까? –