gpt4 book ai didi

php - 一个困难的一对多mysql查询

转载 作者:行者123 更新时间:2023-11-29 04:26:07 25 4
gpt4 key购买 nike

我有两张表,一张是“用户”,一张是“社交网络”。我想以某种格式从两者中获取数据,并且社交网络表将 user_id 作为一列。

我想以这样的方式结束

array{
0 => array{
name => "Bob",
id => 1,
facebook => array{ <all data from the fb row> },
twitter => array{ <all data from the tw row> },
linkedin => array{ <all data from the li row> }
},
1 => array{
name => "Jill",
id => 2,
facebook => array{ <all data from the fb row> },
twitter => array{ <all data from the tw row> },
linkedin => array{ <all data from the li row> }
}
}

这可能吗?

为清楚起见编辑:

social_networks 表看起来像这样:

user_id、social_network、account_url 等

用户表如下所示:

id、姓名、图片等

其中 social_networks 表中的 user_id 与用户表中的 id 匹配。每个用户在 social_networks 表中可以有几行。

我要抓取的是用户表中的整行和社交网络表中的每一行。我更愿意在单个查询中执行此操作。

最佳答案

您不能直接通过 mysql 执行此操作,但您可以相当轻松地执行此操作。这是伪代码:

// connect to database
// query for all users
// foreach user
// add user to array
// add user's fb info to array
// add user's tw info to array
// add user's li info to array

更详细一点(使用 PDO,因为我什至不会假装 mysql_* 没问题)。

<?php

// create a PDO object to connect to the db
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');

// get a basic list of users with their IDs and names
$query = $pdo->query('select user_id, name from users');

// prepare the final array that will hold it all
$users = array();

// loop through the users returned by the query
while($row = $query->fetch(PDO::FETCH_ASSOC)) {
// make an array for this user with the basic data
$user = array('id' => $row['user_id'], 'name' => $row['name']);

// add fb data
$user['fb'] = $pdo->prepare('select * from fb where user_id = :user_id')
->execute(array(':user_id' => $user['id']))
->fetch(PDO::FETCH_ASSOC);


// add li data
$user['li'] = $pdo->prepare('select * from li where user_id = :user_id')
->execute(array(':user_id' => $user['id']))
->fetch(PDO::FETCH_ASSOC);

// add tw data
$user['tw'] = $pdo->prepare('select * from tw where user_id = :user_id')
->execute(array(':user_id' => $user['id']))
->fetch(PDO::FETCH_ASSOC);

// add new user to the full array
$users[] = $user;
}

// do stuff with the $users array

关于php - 一个困难的一对多mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11127984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com