2017-02-01 9 views
0

データベースの2つの異なるテーブルからクエリを実行していますが、最初のクエリの値を格納できますが、2番目のクエリの情報はどのように保存しますか?あなたのコードでMySQLのマルチクエリストアの結果の2番目のクエリ

$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 MUCHコードを書くことにし、サイドノートで最もささいな操作

のために多くの複雑な方法を使用してに傾斜している理由を私は本当にあなたの特定のケースでは、単一のJOINクエリを記述することができ、疑問に思って。

+0

ええ、最初からこれをやってみることを考えましたが、「マルチ」クエリを使用してより効果的な方法があると思いました。 –

0

whileループの実行は、それがどんな結果を表示しないとき、それはそう、結果オブジェクトに関連付けられたメモリを解放しますので、なぜあなたmysqli_free_result機能を使用してです。

$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を使用して結果を解放する必要があります。

関連する問題