2017-02-01 5 views
0

여기 데이터베이스에있는 두 개의 다른 테이블에서 쿼리하고 있는데 첫 번째 쿼리의 값을 저장할 수 있지만 두 번째 쿼리의 정보를 저장하는 방법은 무엇입니까? 이 while 루프 실행이 어떤 결과를 표시하지 않습니다 그래서 때 결과 개체와 연결된 메모리를 해제하기 때문에 당신은 왜 mysqli_free_result 기능을 사용하여 코드에서MySQL 멀티 쿼리 결과 두 번째 쿼리

$query = "SELECT * "; 
$query .= "FROM user_account "; 
$query .= "WHERE user_id = $user_id "; 
$query .= "SELECT * "; 
$query .= "FROM user_profile "; 
$query .= "WHERE user_id = $user_id "; 


if (mysqli_multi_query($mysqli, $query)) { 
    do { 
     if ($result = mysqli_store_result($mysqli)) { 
      while ($row = mysqli_fetch_row($result)) { 
       $Firstname = $row['Firstname']; 
       $Lastname = $row['Lastname']; 
       $Email = $row['Email']; 
       $Birthday = $row['Birthday']; 
       $Address = $row['Address']; 
       $Zip = $row['Zip']; 
       $City = $row['City']; 
       $State = $row['State']; 
       $Country = $row['Country']; 
       $Avatar = $row['Avatar']; Will be added later 
       $Phone = $row['Phone']; 
       $Website = $row['Website']; 
       $Member_level = $row['Member_level']; 
      } 
      mysqli_free_result($result); 
     } 
     if (mysqli_more_results($mysqli)) { 
     } 
     while (mysqli_next_result($mysqli)) ; 
    } 
} 

답변

1

그냥 일반적인 방법

$query = "SELECT * FROM user_account WHERE user_id = $user_id "; 
$account = $mysqli->query($query)->fetch_assoc(); 

$query = "SELECT * FROM user_profile WHERE user_id = $user_id "; 
$profile = $mysqli->query($query)->fetch_assoc(); 

만큼 간단합니다.

PHP 사용자가 SO 많은 코드를 작성하는 가장 사소한 작업 보조 노트에

을 위해 너무 많은 복잡한 방법을 사용하여 경사 왜 난 정말 궁금, 특정 경우에 당신은 하나의 가입 쿼리를 작성할 수 있습니다 .

+0

그래, 처음부터이 문제에 대해 생각해 보았지만 "멀티"쿼리를 사용하여보다 효과적인 방법이 있다고 생각했습니다. –

0

.

$query = "SELECT * FROM user_account WHERE user_id = $user_id "; 
$query .= "SELECT * FROM user_profile WHERE user_id = $user_id "; 

if (mysqli_multi_query($mysqli, $query)) { 
    do { 
     if ($result = mysqli_store_result($mysqli)) { 
      while ($row = mysqli_fetch_assoc($result)) { 
       var_dump($row); //for checking result 
       // Now use array to show your result 
      } 

    } }while (mysqli_next_result($mysqli)) ; 

당신은 mysqli_free_result와 결과 free()를 항상해야, 당신의 결과 개체를 때하는 것은 더 이상 필요하지 않습니다.