删除与用户名相关的行 [重复]

Posted

技术标签:

【中文标题】删除与用户名相关的行 [重复]【英文标题】:Delete row(s) with respect to username [duplicate] 【发布时间】:2019-03-29 12:00:27 【问题描述】:

我已经解决了大多数与此类似的问题,但没有一个解决我的问题。 我的表格有四列:idusernametitledate。当用户单击按钮(锚标记)时,我想删除与特定用户名关联的整行。请问,我该如何实现?这是我试过的代码。

php

<?php 
session_start();

$uname = $_SESSION['username'];
$dbconn = mysqli_connect('localhost','root','','notesdb');
if(!$dbconn)
 die("Connection failed:". mysqli_connect_error($dbconn));

if($stmt = $dbconn->prepare("DELETE * FROM notes_log where username = ? "))
 $stmt->bind_param("s",$uname);
 $stmt->execute();
 $stmt->close();
else
 echo "ERROR: could not prepare SQL statement.";

mysqli_close();
// redirect user after delete is successful
header("Location: index.php");

?>

HTML

<a href="deleteAll.php" onclick="return confirm('Are you sure?')">Delete all</a>

上面的代码重定向了页面,但没有删除任何内容。

【问题讨论】:

你检查过 mysqli_error 吗?不重定向时会看到什么? $SESSION['username'] 里面有什么? (尝试 var_dump() 来检查它的值!您确定它包含正确的用户名吗?单击按钮后脚本会显示任何错误消息? @Jeff 我刚刚检查过,是的,我确实收到了错误消息,你知道可能出了什么问题吗? 错误信息是什么? 星号不是 DELETE 使用的东西,只有 SELECT 可以。参考:dev.mysql.com/doc/refman/8.0/en/delete.html --- dev.mysql.com/doc/refman/8.0/en/select.html 和聚合函数,例如 COUNT() 【参考方案1】:

去掉查询中的*。语法就是:

DELETE FROM notes_log where username = ?

见DELETE Syntax。

在多表DELETE 中,您需要将表名放在DELETE 之后,但单表DELETE 应该没有任何内容。

当一个 SQL 操作失败时,你应该打印 SQL 错误消息,而不仅仅是could not prepare SQL statement,例如

echo "ERROR: could not prepare SQL statement: " . $dbconn->error;

编辑:mysqli_close() 需要数据库连接作为其唯一参数。

参考:http://php.net/manual/en/mysqli.close.php

您需要使用mysqli_close($dbconn)

【讨论】:

我怀疑但没有尝试..它有效,谢谢 这是重复的。 @FunkFortyNiner 可能是这样,但我遇到了问题,我寻求帮助 @henrie Barmar 来这里已经有一段时间了,而且比我来的时间更长。但是,这并不意味着我也不能以重复的形式关闭问题。恕我直言,我觉得my comment 比副本回答得更好。我什至可以在那个副本中提交我自己的,因为没有人提到我有什么。你怎么看Barmar,不是一个坏主意? ;-) @FunkFortyNiner 谢谢,我已将DELETE * 问题添加到我的典型骗子列表中。

以上是关于删除与用户名相关的行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

bash 中的行删除问题:将用户输入传递给 sed 与 grep?

linux管理用户(组)与相关问题处理

如何从 UITableView 中删除选定的行? [复制]

userdel---删除用户及相关文件

删除连接表的重复记录并修复相关表上的外键

oracle删除重复的行怎么删啊