2016-02-23 42 views
0

我一直在試圖執行一個多重查詢,所以我已經尋找更好的方法如何做到這一點,我已經閱讀了這個mysqli_multi_query在PHP中。php的mysqli_multi_query不工作

我試了我自己看到的結果,但它不斷給我錯誤。這裏的代碼:

$studid = $_GET['stud_id']; 
$classcode = $_GET['class']; 

$conn = new MySQLi($host, $username, $password, $dbname) or die('Can not connect to database');  

$sql = "SELECT * FROM tbl_students WHERE stud_id = '".$studid."'"; 
$sql.= "SELECT * FROM tbl_classes WHERE class_code = '".$classcode."'"; 

if (mysqli_multi_query($conn, $sql)) { 
    do { 
     /* store first result set */ 
     if ($result = mysqli_store_result($conn)) { 
      while ($row = mysqli_fetch_row($result)) { 
       $studname = $row[3].", ".$row[1]; 

      } 
      mysqli_free_result($result); 
     } 
     /* print divider */ 
     if (mysqli_more_results($conn)) { 
      printf("-----------------\n"); 
      $studname = $row['fname']; 
     } 
    } while (mysqli_more_results($conn)); 
}else{ echo "error";} 

$conn->close(); 

有了上面的代碼,它只會從我設置的else語句打印錯誤。我也嘗試將第二個查詢更改爲$sql .= "SELECT * FROM tbl_classes WHERE class_code = '".$classcode."'";,並試圖在第一個查詢之後放置分號,以告訴SQL我完成了第一個查詢,因爲我將2個字符串放在一起,但仍然沒有運氣。

+0

你需要一個分號裏面的分號 –

+0

@Dagon正如我所說的,我已經嘗試過了。我試過這樣的'$ sql =「SELECT * FROM tbl_students WHERE stud_id ='」。$ studid。「';」;'但它會一直持續加載。 – kmf

+0

坦誠地說,在10年內我從來沒有使用MySQL多 –

回答

0

試試這個

$studid = $_GET['stud_id']; 
$classcode = $_GET['class']; 

$conn = new MySQLi($host, $username, $password, $dbname) or die('Can not connect to database');  

$sql = "SELECT * FROM tbl_students WHERE stud_id = '$studid';"; 
$sql.= "SELECT * FROM tbl_classes WHERE class_code = '$classcode'"; 

if ($conn->multi_query($sql)) { 
    do { 
     /* store first result set */ 
     if ($result = mysqli_store_result($conn)) { 
      while ($row = mysqli_fetch_row($result)) { 
       $studname = $row[3].", ".$row[1]; 

      } 
      mysqli_free_result($result); 
     } 
     /* print divider */ 
     if (mysqli_more_results($conn)) { 
      printf("-----------------\n"); 
      $studname = $row['fname']; 
     } 
    } while (mysqli_more_results($conn)); 
}else{ echo "error";} 

$conn->close(); 
+0

它將永遠加載。內容不會顯示。 – kmf

+0

條件爲真 –

+0

如果我在第一個查詢中刪除分號,它工作正常。但是當我把它,它不停地加載。 – kmf

0

做的一個查詢,而不是二:

"SELECT ts.*, tc.* 
FROM tbl_students as ts, tbl_classes as tc 
WHERE ts.stud_id = '$studid' 
AND tc.class_code = '$classcode'" 

注:如果你再冗餘數據通過使用組。