我知道如何从单个表中选择行并存储在数组中:
<?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 :(得分:0)
如果您只是想将多个查询的结果存储在不同的数组中,请使用不同的查询和数组执行相同的操作。如果要跨表捕获数据,根据需要,您可以修改查询以使用连接。
答案 1 :(得分:0)
如果这些表完全不相关,并且您想要将所有数据中的所有数据提取到三个单独的数组中,则需要三个单独的select语句。
如果表格相关,您可以使用JOIN。
例如,如果表 项 具有 列ID ,并且表 基础 列 * item_id * ,引用项目中的 id 列,您可以获取组合数据:
SELECT * from items
INNER JOIN bases ON items.id=bases.item_id;
这是你在找什么?如果没有,请提供更多信息,我会修改我的答案。
答案 2 :(得分: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();
等等
答案 3 :(得分:-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");
?>