我正在一个网站上,用户可以登录并上传不同的文档(例如.docx和.pdf),并通过我已经建立的搜索功能下载它们。登录信息将存储在我的用户表中,其中包含以下内容:
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) - (Foreign key for idUsers in users table)
name varchar(255) NOT NULL,
title varchar(255) NOT NULL,
forfatter varchar(255) (forfatter = author)
size int(11),
download int(11) (for later use)
当用户登录并上传文档时,“ idUsers”值将传递到我的文件表中的usersId中。
如上所述,我已经创建了搜索功能,该功能可以将根据搜索参数找到的文档“吐出”到html表中。但是问题来了。用户登录后,他/她应该只能看到他们上载的文档,而我还不太清楚如何完成该操作。
我试图使它以某些不同且可能错误的方式工作。我很确定,mysqli_query中出了点问题。我知道我必须“比较”用户表中的idUsers与文件表中的外键usersId。在用于搜索功能的mysqli_query中,我将用户在搜索字段中键入的单词与名称,标题和forfatter(作者)进行比较。我觉得我制作mysqli_query的方式出错了,因此,我尝试制作多个mysqli_query,一个仅用于搜索功能,仅用于id和usersId。但是它也失败了。
search.php
$usersId = $_SESSION['userId'];
$output = '';
if (isset($_GET['search']) && $_GET['search'] !== ' ') {
$searchingq = $_GET['search'];
$q = mysqli_query($conn, "SELECT * FROM files WHERE id AND usersId AND name LIKE '%$searchingq%' OR title LIKE '%$searchingq%' OR forfatter LIKE '%$searchingq%'") or die(mysqli_error($conn));
mysqli_stmt_bind_param($id, $userId, $name, $title, $forfatter, $download);
$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'];
if (isset($_SESSION['userId']) AND $_SESSION['userId'] = $userId) {
$output .=
'
<tbody class="tableBody">
<tr>
<td>' .$name. '</td>
<td>' .$title. '</td>
<td>' .$forfatter. '</td>
<td class="text-center"><a href="../uploads/'.$name.'" download="'.$name.'"><i class="fas fa-file-export"></i></a></td>
<td class="text-center"><a href="delete.inc.php?id='.$row['id'].'"><i class="fas fa-trash-alt"</a></td>
</tr>
</tbody>';
}
}
}