mysql查询数组中的数组


mysql query array inside array

首先为我糟糕的英语感到抱歉。。。但我有一些问题需要一些建议

如何在一个查询中从数据库中获取数据?是否可以从数据库中获取数组,在主数组中获取另一个数组?

表格结构:

user_post - 
    id int(12) AI unique
    uid int(12)
    content text
user_image - 
    filename varchar255
    uid int(12)
    pid int(12) index
    pid->foreign_key user_post.id 
    ON DELETE CASCADE
    ON UPDATE CASCADE

示例:对于每个userpost可以包含超过1行的userimage,但最多可以包含10行,我如何选择并将其放在一个数组中,这样我就不需要像下面这样运行查询2次了?

查询2次以完成此示例:

$db = new Db('main');
$db->query('SELECT `id`, `uid`, `content` FROM `user_post` WHERE `id` = :id LIMIT 1');
$db->bind(':id', '1'); //Example
$result = $db->single();
$db->query('SELECT `filename`, `uid`, `pid` FROM `user_image` WHERE `pid` = :pid LIMIT 10');
$db->bind(':pid', $result['id']);
$images = $db->resultset();

所以$images将包含帖子的所有图像文件名,无论如何,要在1个查询中创建它?

您只能在一个查询中执行此操作,方法是JOIN处理两个表:

SELECT p.id, p.uid, p.content,
  i.filename, i.uid, i.pid
FROM user_post AS p
INNER JOIN user_image AS i ON i.pid = p.id
WHERE p.id = :id
LIMIT 10;

简单地说,使用内部联接。我已经有一段时间没有接触MySQL了,使用PHP的时间更长了,但我会尽力帮助:

SELECT `user_post`.*, `user_image`.* FROM `user_post` INNER JOIN ON `user_image`.`pid` = `user_post`.`id` WHERE `user_post`.`id` = :id

您需要为此设置一个外键。