我的数据库中有 3 个表:
用户,图片,喜欢用 :
CREATE TABLE IF NOT EXISTS `user` (
`id` int(10) NOT NULL auto_increment,
`email` varchar(255),
`login` varchar(255),
`password` varchar(255),
`admin` boolean,
`pwreset` boolean,
`validate_link` varchar(255),
`created_at` date, PRIMARY KEY( `id` )
);
CREATE TABLE IF NOT EXISTS `pic` (
`id` int(10) NOT NULL auto_increment,
`name` varchar(255),
`owner_id` int(11) NOT NULL,
`created_at` date,
PRIMARY KEY( `id` )
);
CREATE TABLE IF NOT EXISTS `like` (
`id` int(10) NOT NULL auto_increment,
`owner_id` int(11) NOT NULL,
`pic_id` int(11) NOT NULL,
`created_at` date,
PRIMARY KEY( `id` )
);";
我试图获取我的照片并通过照片的owner_id 获取登录信息
我做了这个:
$find_pic = $db->prepare("SELECT p.*, u.login FROM camagru_jgengo.pic as p INNER JOIN camagru_jgengo.user as u ON p.owner_id = u.id ORDER BY p.id DESC ");
$find_pic->execute();
$pics = $find_pic->fetchAll();
输出是:
[0] => Array
(
[id] => 189
[0] => 189
[name] => 1492882407.png
[1] => 1492882407.png
[owner_id] => 1
[2] => 1
[created_at] => 2017-04-22
[3] => 2017-04-22
[login] => jgengo
[4] => jgengo
)
...
现在,我想在此数组中添加新信息,例如:
$pics[x][likes_count]
这是用 like.pic_id
和这个 pic.id
找到的喜欢的数量
我试过了:
$find_pic = $db->prepare("SELECT p.*, u.login, l.like FROM camagru_jgengo.pic as p INNER JOIN camagru_jgengo.user as u ON p.owner_id = u.id INNER JOIN camagru_jgengo.like as l.pic_id = p.id ORDER BY p.id DESC ");
$find_pic->execute();
$pics = $find_pic->fetchAll();
但是它不起作用,有人可以帮助我吗?
最佳答案
这个查询是错误的
SELECT
p.*, u.login, l.like
FROM
camagru_jgengo.pic as p
INNER JOIN
camagru_jgengo.user as u ON p.owner_id = u.id
INNER JOIN
camagru_jgengo.like as l.pic_id = p.id
ORDER BY
p.id DESC
l.pic_id
你还没有定义什么是l
所以应该更正为
SELECT
p.*, u.login, l.like
FROM
camagru_jgengo.pic as p
INNER JOIN
camagru_jgengo.user as u ON p.owner_id = u.id
INNER JOIN
camagru_jgengo.like as l ON l.pic_id = p.id
ORDER BY
p.id DESC
关于php - 发出硬 sql 请求以查找图片的喜欢计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43562928/