簡體   English   中英

獲取多個表MySQL,加入

[英]Fetch multiple tables MySQL, join

我想選擇一些存儲在MySQL數據庫中的信息。 例如,我有2個表gameTable和playerTable。 現在,我想獲取gameTable並獲取這些玩家的名稱和級別。 我該怎么做呢??

在此處輸入圖片說明

這是我到目前為止獲得的結果,它可以工作,但是我不確定這是最有效的方法。 我需要為每個引用行創建一個聯接嗎?

<?php

include ('connect.php');


 $result = mysqli_query($connect,  
        "SELECT gameTable.id, 
            playerTable1.name AS name1, playerTable1.level AS level1, 
            playerTable2.name AS name2, playerTable2.level AS level2, 
            playerTable3.name AS name3, playerTable3.level AS level3, 
            playerTable4.name AS name4, playerTable4.level AS level4
         FROM gameTable
            JOIN playerTable AS playerTable1 ON gameTable.P1_id = playerTable1.id
            JOIN playerTable AS playerTable2 ON gameTable.P2_id = playerTable2.id
            JOIN playerTable AS playerTable3 ON gameTable.P3_id = playerTable3.id
            JOIN playerTable AS playerTable4 ON gameTable.P4_id = playerTable4.id
        ");

    while ($record = mysqli_fetch_array($result))
    { 
        echo $record['id']  . " - " 
            . $record['name1'] . " - " . $record['level1'] . " - " 
            . $record['name2'] . " - " . $record['level2'] . " - " 
            . $record['name3'] . " - " . $record['level3'] . " - " 
            . $record['name4'] . " - " . $record['level4'] . "<br>";
    }

?>

第二個問題,我的數據庫設置為MyISAM。 將其更改為InnoDB是否有幫助? 或者這僅對更新刪除等有用。在您的數據庫中而不對獲取數據有用嗎?

我會這樣處理字符串(參考注釋問題,而不是原始問題)。 這僅為內存中的每個位置保留一個字符串空間。 這節省了為中間字符串分配值的開銷,並且應該節省內存,甚至可以加快執行時間,因為有時字符串連接是一個非常緩慢的過程。

$myarr = array();
 while ($record = mysqli_fetch_array($result))
  { 
    $myarr[] = $record['id'] ; 
    $myarr[] = " - " ;
    $myarr[] = $record['name1'] ;
    $myarr[] = " - " ;
    $myarr[] = $record['level1'];
    $myarr[] = " - ";
    $myarr[] = $record['name2'];
    $myarr[] = " - ";
    $myarr[] = $record['level2'];
    $myarr[] = " - ";
    $myarr[] = $record['name3'];
    $myarr[] = " - ";
    $myarr[] = $record['level3'];
    $myarr[] = " - ";
    $myarr[] = $record['name4'];
    $myarr[] = " - ";
    $myarr[] = $record['level4'];
    $myarr[] = "<br>";
 }
 echo implode('',$myarr);
 unset($myarr);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM