与我以前的帖子一样,我正在创建一个在线店面。我这次要做的(这是我需要完成的最后一部分)是允许管理员或发布该项目的用户能够编辑/删除该项目。这是我创建的代码,用于检查该特定商品的"卖家 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 } ?>
如果可以的话,请帮忙!谢谢!
1.) 您有一个没有开场{
的结束}
:
...
$row2 = mysqli_fetch_assoc($results2);
$seller = $row2['seller'];
// } <<<<==== ????
?>
....
2.) 您可以先开始会话:
session_start();
...
$row2 = mysqli_fetch_assoc($results2);
$seller = $row2['seller'];
// } <<<<==== ????
?>
....
这是你的代码的问题。您从 'lots' 表中选择 *,在 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']) { ?>