2012-08-29 1 views
3

배열 $solution은 2 차원입니다. 그 내용을 SQL 테이블에 저장해야합니다. 그러나 저축하기 전에 이라는 쿼리 결과에 $solution[i][0]이 속하는지 확인해야합니다.2 차원 배열의 i 번째 행에 쉼표를 넣습니다.

문제는 줄 $vals = implode(...)입니다. $solution 배열의 i 번째 행에 쉼표를 함축하려면 어떻게해야합니까? 이제이 행은 올바른 값 대신 0,0,0,0 문자열을 생성합니다.

$columns_land = array("`num_arr`","`start`","`fin`","`way`"); 
    $cols_land = implode(",",$columns_land); 

    for($i=0; $i<sizeof($solution); $i++) { 
      $vals = implode(',', array_map('implode_comma', $solution[$i])); 
      query_land = "INSERT INTO `Sequence` (" . $cols_land . ") 
          VALUES " . $vals . " 
          WHERE num_arr='".$solution[$i][0]."' 
          AND num_arr IN (SELECT num_arr FROM Schedule WHERE num_arr<>'')"; 

      $result_land = execute_query($query_land); 
    } 

    function implode_comma($arr) { 
     return '(' . implode(',', $arr) . ')'; 
    } 
+0

implode_comma 함수에서 임시 변수를 사용하여 반환하기 전에 출력을 가져 오십시오. – Shubhansh

답변

1

이 명령문은 나를 혼란했습니다 implode_comma() 이후

$vals = implode(',', array_map('implode_comma', $solution[$i])); 

$solution[$i]의 각 항목은 또한 배열해야 배열을 기대한다; 하지만 $solutions 그 자체가 3 차원 배열이어야 함을 의미합니다. ,

$vals = implode(',', $solution[$i]); 
$query_land = "INSERT INTO `Sequence` ($cols_land) 
    VALUES ($vals) 
    WHERE num_arr='".$solution[$i][0]."' 
    AND num_arr IN (SELECT num_arr FROM Schedule WHERE num_arr<>'')"; 

$result_land = execute_query($query_land); 

, BTW 제대로 당신이 SQL에서 사용하는 변수를 탈출해야한다,하지만 난 당신이 사용중인 데이터베이스 계층 말할 수 없다 :

내가 방금 대신 루프 내에서이 정보를 제공 할 수 있다고 생각되면 그래서 나는 당신에게 맡깁니다.

+0

$ vals = implode (',', $ solution [$ i]);를 사용하면 인용 부호없는 값 VALUES (BT01451087,2012-08-29 15 : 47,2012-08-29 16:10, 1). –

+0

@youkuper 그건 원래 코드가 그 값을 인용하지 않았기 때문입니다 :) 제가 말했듯이, 당신이 사용하고있는 db API가 무엇인지 모르겠습니다. –

관련 문제