我正处于制作用户可以注册和登录的网站的最后阶段。之后,他们可以上传 .pdf 和 .docx 等文件并搜索这些文件。用户数据存储在我的用户表中,其中包含以下内容:
idUsers int(11) PRIMARY KEY NOT NULL,
uidUsers TINYTEXT NOT NULL,
emailUsers TINYTEXT NOT NULL,
pwdUsers LONGTEXT NOT NULL,
然后我有一个名为“文件”的表,其中存储了我存储的用户上传的文件。该表包含以下内容:
id int(11) PRIMARY KEY NOT NULL,
usersId int(11) NOT NULL, - (Foreign key for idUsers in users table)
name varchar(255) NOT NULL,
title varchar(255) NOT NULL,
forfatter varchar(255) NOT NULL, (forfatter = author)
size int(11),
download int(11) (for later use)
因此,当特定用户登录并上传文档时,用户“id”(用户表中的主键)将传递给我的文件表中的“usersId”。
到目前为止,所有这些都运行良好。
然后用户可以使用搜索功能,用户可以在其中搜索文档的名称、标题和作者,这也很好用。
我只需要确保用户只能看到自己上传的文件。但我想不通。到目前为止,我已经尝试了许多不同的解决方案。
我试过一个我看到的建议,我试图让我的 mysqli_query 看起来像这样:
"
SELECT *
FROM files
WHERE id
AND usersId name LIKE '%$searchingq%'
OR title LIKE '%$searchingq%'
OR forfatter LIKE '%$searchingq%'
AND usersId='.$usersId.'"
那效果不佳。感觉会话没有找到当前 $_SESSION 的 ID。
我的搜索 .php 看起来像这样:
$usersId = $_SESSION['userId'];
$output = '';
if (isset($_GET['search']) && $_GET['search'] !== ' ') {
$searchingq = $_GET['search'];
$q = mysqli_query($conn, "SELECT * FROM files WHERE `usersId` = {$usersId} AND (`name` LIKE '%{$searchingq}%' OR `title` LIKE '%{$searchingq}%' OR `forfatter` LIKE '%{$searchingq}% )");
$c = mysqli_num_rows($q);
if($c == 0) {
$output = '<p>No search results for: "' .$searchingq. '"</p>';
} else {
while($row = mysqli_fetch_array($q)) {
$name = $row['name'];
$title = $row['title'];
$forfatter = $row['forfatter'];
$download = $row['downloads'];
$output .=