添加第二个WHERE子句或用PHP解析结果?

Jee*_*eak 0 php mysql where

我的代码提取了报告的详细信息,但我只希望显示详细信息,如果该特定报告与尝试查看它的用户相关联.我想知道WHERE在查询中添加第二个子句是否更有效/正确,或者我是否应该使用PHP来检查相关的用户ID?我更喜欢后者,因为管理员可以更容易地访问所有记录.

<?php
$query = mysql_query("SELECT report_id, report_user, report_text
                        FROM reports
                        WHERE report_id = '$rid'
                        AND report_user = '$uid'");

$report = mysql_fetch_assoc($query);
?>
Run Code Online (Sandbox Code Playgroud)

要么

<?php
$query = mysql_query("SELECT report_id, report_user, report_text
                        FROM reports
                        WHERE report_id = '$rid'");

$report = mysql_fetch_assoc($query);
if ($report['user'] !== $uid) {
    // Access Denied
}
?>
Run Code Online (Sandbox Code Playgroud)

提前致谢!比利

Ass*_*mon 5

我认为你应该在查询选项中进行过滤.如果您的PHP代码中存在一些错误,它会更有效并且可以更好地保护用户隐私.关于查看报告的管理员能力,您可以动态制作查询.

$sql = "SELECT report_id, report_user, report_text
                        FROM reports
                        WHERE report_id = ?";
if($userContext)
{

    $sql .= " AND report_user = ?";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param('dd', $rid, $uid);
}
else //admin context
{
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param('d', $rid);
}
Run Code Online (Sandbox Code Playgroud)

你做了什么确保绑定变量.