2012-11-12 3 views
1

코딩 과정에서 나는이 문제에 정말로 빠져 들었다. 나는 foreach 루프를 실행했고 모든 항목에 대해 함수에서 특정 값을 얻어야했다. 하지만 단 하나만 반환했습니다. 나는 무슨 일이 일어나고 있는지 알 수 없었다. 나는 너희들이 분명히 희망하기를 바란다. 다음은 내 프로그램의 짧은 버전입니다. 마침내 데이터베이스 구조가 제공됩니다. 내 질문을 삭제하지 않은 경우 함수가 한 번만 반환하는 이유는 무엇입니까?

<?php 


function opendb() { 
    mysql_connect("localhost", "root", "root"); 
    mysql_select_db("something_db"); 
} 

function sql_query($sql) { 
    $datas = array(); 
    if ($res = mysql_query($sql)) { 
     $x = 0; 

     while ($data = mysql_fetch_assoc($res)) { 
      $datas[$x] = $data; 
      $x += 1; 
     } 
    } 
    return $datas; 
} 

function get_parent_id($table, $parent, $cid) { 

    // cid=>child id 
    $sql = "SELECT * FROM $table WHERE id=$cid"; 
    $datas = sql_query($sql); 
    $pid = $datas[0]['parent']; 
    $p_id = $datas[0]['id']; 
    if ($pid != 0) { 
     get_parent_id($table, $parent, $pid); 
    } else { 

     return $p_id; 
    } 
} 

opendb(); 

$datas_pkg = sql_query("SELECT * FROM tbl_packages WHERE 1"); 
foreach ($datas_pkg as $data_pkg) { 
    echo $data_pkg['destination_id'] . '-->'; 
    echo $parent_id = get_parent_id('tbl_destinations', 'parent', $data_pkg['destination_id']); 
    echo '<br/>'; 
} 
?> 

데이터베이스 구조

..

tbl_destinations

+--------+-------------------------+-----------+ 
| id(int)|destination_name(Varchar)|parent(int)| 
+--------+-------------------------+-----------+ 

tbl_packages

+-------+---------------------+-------------------+ 
|id(int)|package_name(varchar)|destination_id(int)| 
+-------+---------------------+-------------------+ 

제가 당신이 도움이 도움이 될 수 있도록 알려 주시기 바랍니다 나를.

답변

1
if($pid!=0) 
    { 
      get_parent_id($table,$parent,$pid); 

    } 

함수를 호출하지만 그 값을 사용하지 마십시오.

+0

나는 그것을 얻지 못했다고 생각합니다. 대답을 자세히 설명해주십시오. –

+0

SQL 쿼리를 실행하고 결과를 반품 한 다음 반환 된 함수를 폐기하는 함수가 있습니다. 변수에 저장하거나 그 변수로 처리하고 싶지 않으십니까? –

+0

하지만 함수에서 반환 된 값을 에코하여 사용 했습니까? –

관련 문제