我是PHP的新手,只想创建一个基本页面,在那里我可以看到数据库中的所有用户并删除它们。我已经到了这么远,但它一直告诉我,我有一个我有和未定义的索引:user_id虽然它告诉我它删除了字段,但它没有删除任何东西。这是我的代码:
<?php include_once "includes/scripts.php"; ?>
<?php include_once "includes/connect.php";?>
<?php include_once "includes/cms_page_security.php";?>
<div id="cms_container"><br>
<br>
<h1>MANAGE USERS<img src="images/three_column_grid_line.png" alt="line"></h1>
<p class="logout_btn"><a href="admin_cms.php">Back</a></p>
<?php
$tbl="users"; // Table name
$sql = "SELECT * FROM $tbl";
$result = mysql_query($sql, $connect);
while($rows = mysql_fetch_array($result)){
?>
<?php
echo $rows['user_id'];
echo $rows['user_name'];
echo $rows['user_password'];
?>
<a href="delete_user.php?id= <? echo $rows['user_id']; ?>">delete</a>
<?php
}
?>
<?php
mysql_close();
?>
</div><!--cms_container-->
</body>
</html>
它应链接到的页面将删除查询:
<?php include_once "includes/connect.php";?>
<?php
$tbl="users";
$user_id= $_GET ['user_id'];
$sql="DELETE FROM $tbl WHERE user_id = '$user_id'";
$result = mysql_query($sql, $connect);
if($result){
echo "Deleted Successfully";
echo "<BR>";
echo "<a href='delete.php'>Back to main page</a>";
}else {
echo "ERROR";
}
?>
<?php
mysql_close();
?>
答案 0 :(得分:3)
在delete_user.php中,您必须获得user_id
$user_id= $_GET ['id'];
因为在您的<a href="delete_user.php?id= <? echo $rows['user_id']; ?>">delete</a>
链接中,GET变量是&#34; id&#34;,而不是&#34; user_id&#34;
答案 1 :(得分:2)
你真的应该使用PDO。 问题出在您传递的信息中。
链接:<a href="delete_user.php?id= <? echo $rows['user_id']; ?>">delete</a>
正在寻找'id',但你后来正在寻找'user_id'
如果您将其更改为<a href="delete_user.php?user_id=<? echo $rows['user_id']; ?>">delete</a>
,它应该有效。
我仍强烈建议你研究PDO,但它更安全,更容易使用。
PDO删除示例
public function deleteUser($username, $user_id){
if($this->isAdmin($username) == true){
$query = $this->db->prepare('DELETE FROM users WHERE user_id = ?');
$query->bindValue(1, $user_id);
try{
$query->execute();
}catch(PDOException $e){
die($e->getMessage());
}
}else{
return false;
}
}
我正在进行额外的检查,以确保请求删除的人是管理员,但您应该能够看到结构
答案 2 :(得分:1)
除了其他答案:
如果没有启用php短标记,看起来此行可能是致命错误:
<a href="delete_user.php?id= <? echo $rows['user_id']; ?>">delete</a>
php手册说:
* PHP还允许使用短标记<?
和?>
(这是不鼓励的,因为它们只有在启用时才可用
short_open_tag php.ini配置文件指令,或者是否配置了PHP
使用--enable-short-tags选项。*
http://php.net/manual/en/language.basic-syntax.phptags.php
答案 3 :(得分:0)
即使SQL查询改变零行,它也会成功。在生成HTML(id= <?
)时,您在用户ID前面加上一个空格,因此您不匹配任何行(因为"1"
不会与" 1"
匹配)
答案 4 :(得分:0)
您正在创建“删除”的位置。链路
<a href="delete_user.php?id= <? echo $rows['user_id']; ?>">delete</a>
您正在创建&#39; id&#39;的变量,但稍后您会查找&#39; user_id。
将您的链接更改为
<a href="delete_user.php?user_id=<? echo $rows['user_id']; ?>">delete</a>