MySQL Multi Query存储结果第二个查询

时间:2017-02-01 00:35:04

标签: php mysqli mysqli-multi-query

我在这里查询数据库中的两个不同的表,我可以存储第一个查询中的值但是如何存储第二个查询中的信息?

$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)) ;
    }
}

2 个答案:

答案 0 :(得分: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查询。

答案 1 :(得分:0)

在您的代码中,为什么使用mysqli_free_result函数,因为它将释放与结果对象关联的内存,因此当while循环运行时,它不会显示任何结果。

$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()来释放你的结果   不再需要你的结果对象了。