2013-04-22 51 views
0

我知道如何從一個表和存儲陣列中的選擇行:使用PHP/PDO來存儲/選擇行從多個表

<?php 
    include "db.php"; 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sql = "SELECT * from chars"; 
    $stmt = $conn->prepare($sql); 
    $stmt->setFetchMode(PDO::FETCH_ASSOC); 
    $bows = array(); 
    if ($stmt) { 
     try { 
      $stmt->execute(); 
      while ($row = $stmt->fetch()) { 
       $chars[] = $row; 
      } 
     } 
     catch (PDOException $e) { 
      var_dump($e); 
     } 
    } 
?> 

但我怎麼做,如果我有多個表,即。 chars,items,bases等,我想要使用不同的選擇查詢爲每個和存儲在不同的數組?

編輯:表沒有相關的字段。

+0

可能我的回答有幫助嗎? – 2013-05-27 14:42:13

回答

0

如果您只是想將多個查詢的結果存儲在不同的數組中,請對不同的查詢和數組執行相同的操作。如果您要跨表格抓取數據,則根據您的需要,您可能會修改查詢以使用連接。

0

如果這些表完全不相關,並且您希望將所有數據中的所有數據提取到三個單獨的數組中,則需要三個單獨的select語句。

如果表格是相關的,則可以使用JOIN。

例如,如果表項目列ID,並表基地有列* ITEM_ID *,這是指ID列中的項目,你可以得到結合的數據:

SELECT * from items 
INNER JOIN bases ON items.id=bases.item_id; 

這是你在找什麼?如果沒有,請提供更多信息,我會修改我的答案。

-1

您可以編寫一個函數

<?php 
include "db.php"; 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

function getArr($vartable) { 
    global $conn; 
    $sql = "SELECT * from ".$vartable; 
    $stmt = $conn->prepare($sql); 
    $stmt->setFetchMode(PDO::FETCH_ASSOC); 
    $ars = array(); 
    if ($stmt) { 
    try { 
     $stmt->execute(); 
     while ($ars[] = $stmt->fetch()); 
    } 
    catch (PDOException $e) { 
     var_dump($e); 
    } 
    } 
return $ars; 
} 

$chars = getArr("chars"); 
$items = getArr("items"); 
$bases = getArr("bases"); 

?> 
0

只需使用你正在使用同樣的方法,在此刻,卻沒有一切無用代碼:

<?php 
include "db.php"; 

$stmt = $conn->prepare("SELECT * from chars"); 
$stmt->execute(); 
$chars = $stmt->fetchAll(); 

$stmt = $conn->prepare("SELECT * from items WHERE id=?"); 
$stmt->execute(array($id)); 
$item = $stmt->fetch(); 

$stmt = $conn->prepare("SELECT name FROM bases WHERE id=?"); 
$stmt->execute(array($id)); 
$base = $stmt->fetchColumn();