【问题标题】:how to select photos from another table using mysql,php如何使用mysql,php从另一个表中选择照片
【发布时间】:2017-07-14 12:51:57
【问题描述】:

我的数据库有两个表,用户表和照片表。

我想要的是在两个表之间建立连接,我希望用户能够使用他们上传到照片表的照片来更新用户表中的头像字段。每次他们上传照片时,头像字段都会用新照片更新,我知道 mysql 中的外键,但在这方面并不完美。

您能否告诉我这是否是在我的网站上实现此类功能的最佳方式。如果我的语法不完美,请不要生气。

CREATE TABLE `users` (
  `id` bigint(20) NOT NULL,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `age` bigint(200 NOT NULL,
  `gender` VARCHAR(10) NOT NULL,
  `avatar` tex NOT NULL,
  `signup_date` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

然后我有另一个表,其中包含用户上传的所有照片,这是结构

CREATE TABLE IF NOT EXISTS `photos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `location` varchar(100) NOT NULL,
  `caption` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

【问题讨论】:

标签: php mysql


【解决方案1】:

首先你要在这两个表之间建立连接,在photos表中添加列user_id。

CREATE TABLE
IF NOT EXISTS photos (
    id INT (11) NOT NULL AUTO_INCREMENT,
    location VARCHAR (100) NOT NULL,
    caption VARCHAR (100) NOT NULL,
    user_id int(11) NOT NULL,
    PRIMARY KEY (id)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 5;

然后更改用户表的结构,您必须将头像存储为带有照片 id 的 int。 将头像从 varchar 更改为整数值。

CREATE TABLE users (
    id BIGINT (20) NOT NULL,
    username VARCHAR (255) NOT NULL,
    PASSWORD VARCHAR (255) NOT NULL,
    email VARCHAR (255) NOT NULL,
    age BIGINT (200) NOT NULL,
    gender VARCHAR (10) NOT NULL,
    avatar INT(10) NOT NULL,
    signup_date INT (10) NOT NULL
    ) ENGINE = MyISAM DEFAULT CHARSET = utf8;

然后,当用户将数据添加到照片表中时,只需写入 user_id,然后您就可以使用 MySQL 查询获取所有用户的照片:

SELECT * FROM `photos` WHERE user_id={your_user_id}

然后,您将选择一张您要制作头像的照片的 id,并使用照片 id (photos.id) 更新名为 avatar 的 users 表列

【讨论】:

  • 如果我明白你的意思,先生,每次用户将数据添加到 photos 表时,我都会大喊将用户 ID 添加到 user_id 列的照片表中?对吗?
  • 是的。每次用户添加照片时,您都必须写入 photos.user_id 列数据。
  • 抱歉打扰了。假设,我目前是登录用户并想更改我的个人资料照片。那么,它是否会更新或创建一个新行 @RuslanMusayev ?
  • 但现在我什至无法向照片表添加值
  • 谢谢,但没有值被插入到 user_id 列这是我运行的代码,我创建了字段if(mysql_query('INSERT INTO photos (id,location,caption,user_id) VALUES ('.$id.',"'.$location.'","'.$caption.'",'.$SESSION['userid'].')")); header("location: indexupload.php");
【解决方案2】:

我认为您需要做的第一件事是在您的照片表中添加一个 user_id 列,这将充当外键,以便您可以找到某个用户上传的所有照片。完成此操作后,您可以使用以下内容获取用户上传的所有照片

SELECT * FROM `photos` WHERE `user_id` = <user_id>

【讨论】:

  • 感谢您花时间帮助我修改表格,但现在的问题是,我无法将用户 ID 插入照片表格。
猜你喜欢
  • 2016-09-23
  • 2019-03-16
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 2016-07-22
  • 1970-01-01
相关资源
最近更新 更多