与我以前的帖子一样,我正在创建一个在线店面。我这次要做的事情(这是我需要完成的最后一部分)是允许管理员或发布该项目的用户能够编辑/删除该项目。 这是我创建的代码,用于检查'卖家ID'该特定项目与$ _SESSION [' user_id']相同。如果是,则启用该用户(如果他/她不是管理员)编辑/删除该项目。但问题是,只有管理员即使使用该代码也可以编辑/删除项目。谁知道为什么?
<?php
$mysqli = mysqli_connect("localhost", "php24sql", "some password", "smithside");
$query2 = "SELECT * FROM lots";
$results2 = mysqli_query ($mysqli, $query2);
$row2 = mysqli_fetch_assoc($results2);
$seller = $row2['seller'];
}
?>
<?php if ($accessLevel == 'Admin' || $seller == $_SESSION['user_id']) { ?>
<a class="button edit"
href="index.php?content=lotdelete&cat_id=<?php echo $cat_id_in; ?>&lot_id=<?php echo $lot->getLot_id(); ?>">Delete
</a>
<a class="button edit"
href="index.php?content=lotedit&cat_id=<?php echo $cat_id_in; ?>&lot_id=<?php echo $lot->getLot_id(); ?>">Edit
</a>
<?php } ?>
如果可以,请帮忙!谢谢!
答案 0 :(得分:0)
1。)您的结束}
没有开放{
:
...
$row2 = mysqli_fetch_assoc($results2);
$seller = $row2['seller'];
// } <<<<==== ????
?>
....
2。)你可以先开始会议:
session_start();
...
$row2 = mysqli_fetch_assoc($results2);
$seller = $row2['seller'];
// } <<<<==== ????
?>
....
答案 1 :(得分:0)
以下是您的代码的问题。您正在从“批次”表中选择*而在WHERE语句中没有特定约束。运行查询时,您只选择从'lots'表返回的任何内容的顶行。当$ seller和$ _SESSION ['user_id']之间进行比较时,$ seller变量是不明确的。这是一些可能有用的更新代码。
另外......尽量避免在SQL语句中使用*。通过选择要读取的列将减少需要解析的数据量。此外,这是一个很好的做法。
$query2 = "SELECT * FROM lots WHERE <columnName> = {$_SESSION['user_id']}";
$results2 = mysqli_query ($mysqli, $query2);
$row2 = mysqli_fetch_assoc($results2);
$seller = $row2['seller'];
}
?>
<?php if ($accessLevel == 'Admin' || $seller == $_SESSION['user_id']) { ?>