php - 发出硬 sql 请求以查找图片的喜欢计数

标签 php mysql sql

我的数据库中有 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/

相关文章:

php - 是所有 mysqli PHP 函数都有 mysqli 还是有些只有 mysql?

mysql - 是否可以限制 WHERE 列 IN(...) 语句中每个值的行数?

.Net 加载文件或程序集错误

php - 计算点击次数并将其存储在 FTP 中

带有 smarty 的 PHP 循环

php - 如何sql更新两个条件

java - 通过 Hibernate Projections on Entity with ManyToOne 关系在 SQL 查询中使用更少的列

sql - 此 OUTPUT 语句 (SQL Server 2005) 的语法有什么问题?

php - 将表单结果发送到另一个页面 php mysql

mysql - 如果 postid 是新的,则插入 mysql,否则更新