我正在尝试创建一个停用帐户...当我点击一个链接时,我想要在数据库中更新帐户状态,这样它就会变为0.每次我点击链接这里都没有发生它只是重新直接我转到另一页这是我的停用代码
<?php
include "../includes/dbcon.php";
if(isset($_GET['user_id']))
{
$result = mysql_query("SELECT user_id FROM users WHERE user_id = $user_id");
while($row = mysql_fetch_array($result))
{
echo $result;
$status = $row($_GET['status']);
if($status == 1)
{
$status = 0;
$update = mysql_query("Update users set status = $status");
header("location: admin_manage_account.php");
}
else
{
echo "Already deactivated";
}
}
}
?>
答案 0 :(得分:0)
我不知道你的问题究竟是什么,但为什么要根据id选择id?
为什么不首先做“UPDATE users SET status = $status WHERE user_id = $user_id
”这样的事情?
在您的示例中,您甚至没有更新声明中的条件...
如果您想“切换/翻转”某个值,您可以执行以下操作:
UPDATE users SET status = NOT status WHERE user_id = $user_id
这样,真实变为虚假,虚假变为真实等等。
答案 1 :(得分:0)
您的代码不正常有很多原因。但最严重的问题是 SQL注入攻击!
如果攻击者将非预期值添加到您的user_id参数中,则您的"SELECT user_id FROM users WHERE user_id = $user_id"
和"Update users set status = $status WHERE
user_id = '$user_id'"
之类的sql会导致非常严重的问题。
例如:user_id可以是:"0; DROP TABLE users"
小心你的代码,重写它
答案 2 :(得分:-1)
需要改进的东西太多了。你也不应该使用MySQL。考虑MySQLi或PDO。 BTW这里是您自己的代码的更新版本,应该可以工作:
<?php
include "../includes/dbcon.php";
if(isset($_GET['user_id']))
{
$user_id = $_GET['user_id']; // I assume you want to capture it from URL
$result = mysql_query("SELECT user_id FROM users WHERE user_id = $user_id");
while($row = mysql_fetch_array($result))
{
// echo $result; why do you echo it? No need
/* $status = $row($_GET['status']); should be: */
$status = $row['status'];
if($status == 1)
{
$status = 0;
$update = mysql_query("Update users set status = $status WHERE `user_id` = '$user_id'");
header("location: admin_manage_account.php");
}
else
{
echo "Already deactivated";
}
}
}
?>
以前,您没有定义$user_id
。而且,获取用户状态($status
)的方式不正确。