php mysql - 从多个表中选择所有行然后保存为对象数组 (json)

标签 php mysql json select pdo

我有这个,效果很好:

include '../sql.php';
$d = $_POST['forum'] or die('no forum name was given');
$p = new PDO('mysql:host=localhost; dbname=mydb; charset=utf8', $user, $pw);
$s = $p -> query('SELECT * FROM `_' . $d . '`');
echo json_encode($s -> fetchAll(PDO::FETCH_ASSOC));

在上面的例子中,$d 是一个字符串(我想从中获取所有结果的表的名称),我用它来获取该表的所有行并将其放入一个数组(作为一个对象)这样我就可以在客户端检索它。

该代码产生如下内容:

[{"id":"1", "name":"bob"}, {"id":"2", "name":"frank"}]

我想做的是使 $d 成为一个表名数组。然后像循环一样从所有这些表中检索所有行,或者简单地同时选择所有这些表并返回结果。

结果应该是这样的:

[
    [{"id":"1", "name":"bob"}, {"id":"2", "name":"frank"}], //table 1
    [{"id":"1", "color":"red"}, {"id":"2", "color":"blue"}], //table 2
    [{"id":"1", "style":"conservative"}, {"id":"2", "style":"gothic"}], //table 3
]

我该怎么做?

最佳答案

尝试类似的东西:

include '../sql.php';
$d = $_POST['tables'] or die('no forum name was given');
$p = new PDO('mysql:host=localhost; dbname=mydb; charset=utf8', $user, $pw);

$ret = [];
foreach ($d as $t){
    $s = $p->query('SELECT * FROM `_' . $t . '`');
    $ret[$t] = $s -> fetchAll(PDO::FETCH_ASSOC);
}
echo json_encode($ret);

关于php mysql - 从多个表中选择所有行然后保存为对象数组 (json),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26391951/

相关文章:

javascript - 使用php将ajax发送的数据写入带有数组的json文件

PHP HTTP 请求

mysql - 遍历MYSQL数据库并替换一列中每条记录中的数据

MYSQL - 确定一行中的先前值

java桌面应用程序,netbeans mysql jdbc

python - 当索引位于列表中时使用嵌套属性遍历 JSON - python

php - 是否有一个 call_user_func() 相当于创建一个新的类实例?

php - VPS 重新启动后,OpenLiteSpeed Cyber​​Panel 上的 Wordpress 出现 404 错误

c++ - 为什么 Jansson 的 is_json_object() 无法识别我的 JSON 字符串?

javascript - 使用php转换为json