MySQL表JOIN建议

时间:2015-05-11 18:40:44

标签: php mysql

我想知道最好的建议是什么才能达到几点。我有一个工作数据库,我可以注册新用户,创建我称之为文档和类别。表格如下:

Users Tables
    `id` int(11) NOT NULL,
      `username` text NOT NULL,
      `password` varchar(64) NOT NULL,
      `psalt` text NOT NULL


Documents Table
`doc_id` int(11) NOT NULL,
  `doc_title` varchar(50) NOT NULL,
  `doc_content` text NOT NULL,
  `doc_created` datetime NOT NULL,
  `doc_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

Categories Table
`cat_id` int(11) NOT NULL,
  `cat_title` varchar(32) NOT NULL

所以当我作为我的1位用户登录时,当前是管理员 - 两个表加入并且我需要另一个表来加入它们吗?我不清楚这些如何变得相关,因为我尝试使用该工具在phpMyadmin中关联它们(不是最好的工具,但它是我必须使用的)。这背后的原因是因为如果我以“管理员”或其他用户身份登录并创建了一个文档,我希望它说它是由该用户发布的。

此外,关于文件,它们属于一个类别。但我不确定这种关联在哪里。最终的结果是,会有一些用户可以看到不同的类别,并且根据他们看到的文档类别。

所以,按照你的建议,我已经设法过滤了一些数据并用SQL显示它。

SELECT user_login.id,user_login.username, doc_list.doc_title FROM user_login, doc_list WHERE user_login.id=user_id

我在doc_list表中添加了一个名为“user_id”的新列,这是我发布它的关系。现在,我手动将user_id输入到字段中以确保我得到了一些结果,但是我如何从我的php(见下文)将用户ID推入表中以便自动化?

<?php

if(isset($_POST["submit"])){
$hostname='localhost';
$username='######';
$password='######';

try {

$dbh = new PDO("mysql:host=$hostname;dbname=######",$username,$password);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line

$sql = "INSERT INTO doc_list (doc_title, doc_content, doc_created) VALUES ('".$_POST["doc_title"]."','".$_POST["doc_content"]."', NOW() )";


if ($dbh->query($sql)) {
    header ('Location: ../docList.php');
}
else{
}

$dbh = null;
}
catch(PDOException $e)
{
echo $e->getMessage();
}

}
?>

1 个答案:

答案 0 :(得分:0)

您需要将属于用户表用户ID 放在文档表中,以提供“它由该用户发布”然后将Users Tables与Documents Table连接起来。

相关问题