删除与用户名相关的行 [重复]
Posted
技术标签:
【中文标题】删除与用户名相关的行 [重复]【英文标题】:Delete row(s) with respect to username [duplicate] 【发布时间】:2019-03-29 12:00:27 【问题描述】:我已经解决了大多数与此类似的问题,但没有一个解决我的问题。 我的表格有四列:id、username、title 和 date。当用户单击按钮(锚标记)时,我想删除与特定用户名关联的整行。请问,我该如何实现?这是我试过的代码。
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 *
问题添加到我的典型骗子列表中。以上是关于删除与用户名相关的行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章