删除有关用户名的行

时间:2018-10-25 00:30:01

标签: php html mysqli delete-row

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

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>

以上代码重定向了页面,但未删除任何内容。

1 个答案:

答案 0 :(得分:4)

摆脱查询中的*。语法就是:

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)