0

我知道如何从单个表中选择行并存储在数组中:

<?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等,我想为每个查询使用不同的选择查询并存储在不同的数组中?

编辑:表格没有相关字段。

4

4 回答 4

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();

等等

于 2013-04-22T19:14:39.863 回答
0

如果这些表完全不相关,并且您想将所有数据从它们全部提取到三个单独的数组中,则需要三个单独的 select 语句。

如果表是相关的,则可以使用 JOIN。

例如,如果表items列 id,并且 table bases有列*item_id*,它引用 items 中的id列,您可以使用以下方式获取组合数据:

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

这是你想要的?如果没有,请提供更多信息,我将修改我的答案。

于 2013-04-22T18:33:43.587 回答
0

如果您只是想将多个查询的结果存储在不同的数组中,请对不同的查询和数组执行与现在相同的操作。如果您要跨表抓取数据,根据您的需要,您可以修改查询以使用联接。

于 2013-04-22T18:15:44.913 回答
-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");

?>
于 2013-04-22T18:38:36.023 回答