我经历了大多数与此类似的问题,但是都没有解决我的问题。 我的表格有四列: 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>
以上代码重定向了页面,但未删除任何内容。
答案 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)
。