我想知道最好的建议是什么才能达到几点。我有一个工作数据库,我可以注册新用户,创建我称之为文档和类别。表格如下:
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();
}
}
?>
答案 0 :(得分:0)
您需要将属于用户表的用户ID 放在文档表中,以提供“它由该用户发布”然后将Users Tables与Documents Table连接起来。