如何使用php删除Mysql中的当前行?
我想从我的Mysql数据库中搜索,每一行都有一个右侧的删除按钮。 当我单击“删除”按钮时,应从数据库中删除该当前行。 我试图在php中创建一个包含要从数据库中删除的Query的函数。但是当我在我的搜索块中调用它时它不起作用。
我创建了两个函数,一个用PHP(名为“hello”),包含Delete Query,另一个用JavaScript(名为“DeleteRecord”),调用php函数“hello”。 现在我在我的搜索块中调用了JS函数。 JS函数工作正常,但是当JS调用一个php函数时,如果我只使用echo,它也可以工作,但是在php函数中如果我取消注释删除查询,它就不起作用了!
任何人都可以帮助我 谢谢!
function viewRecord($Para)
{
echo "<table border=1>
<thead>
<th>Book_Number</th>
<th>Name</th>
<th>Auther</th>
<th>Quantity</th>
<th>Shelf</th>
</thead>";
while($row=mysql_fetch_array($Para))
{
echo "<tr>";
echo "<td>".$row['Book_Number']."</td>";
global $DeleteRecordNumber;
$DeleteRecordNumber = $row['Book_Number'];
echo "<td>".$row['Name']."</td>";
echo "<td>".$row['Auther']."</td>";
echo "<td>".$row['Quantity']."</td>";
echo "<td>".$row['Shelf']."</td>";
echo "<td>"."<input type=button value=Delete onclick=DeleteRecord()>"."</td>";
echo "</tr>";
}
echo "</table>";
}
function hello()
{
global $DeleteRecordNumber;
$asd = $DeleteRecordNumber;
echo $asd;
// $Del = "DELETE FROM books WHERE Book_Number='$asd'";
// mysql_query($Del);
}
mysql_close($Connection);
?>
<script type=text/javascript>
function DeleteRecord()
{
document.write (<?php hello(); ?>);
}
</script>
答案 0 :(得分:1)
等一下,我想你正在把苹果与橘子混合!除非您提交表单,否则无法使用按钮在客户端执行PHP功能。我越看你的帖子我发现的错误就越多。
但是,假设您正在提交命令(您没有显示DeleteRecord()的作用,那么我假设您在那里有一个表单子项),您的表中应该有一个唯一的字段,例如'id'将是NOT NULL,AUTO_INCREMENT,PRIMARY类型。
在取消行时,请让每一行都保留此唯一ID。然后按下按钮时,只需执行以下操作:
$result = MySQL_Query("DELETE QUICK FROM books WHERE id='idtodelete'");
使用您的表名和唯一ID更新查询,应该这样做。 将其转换为功能应该像:
function delete_record($id)
{
return MySQL_Query("DELETE QUICK FROM books WHERE id=$id");
}
如果您不想使用唯一字段,请使用任何唯一的内容,例如电子邮件或同一表中另一条记录中不存在的内容,例如您的字段“Book_Number”,但它更适合于字段'ID'。
列名称区分大小写,因此,如果您的查询无法正常工作,请检查所有内容的字符大小写。
答案 1 :(得分:0)
您是否尝试在不刷新页面的情况下删除记录?
如果是这样,您可以通过javascript / jquery删除元素,并在删除功能上,您将使用book id和要执行的操作对服务器进行ajax调用。
在jQuery中,它看起来像是(假设您在book_number <td>
中添加了一个id作为book_number):
<script>
var data = {
book_id: $("#book_number"),
operation:"delete"
}
var jqxhr = $.post( "example.php", data, function() {
alert( "Record deleted" );
//delete the row from the table
})
.done(function() {
alert( "Alternative to the above" );
})
.fail(function() {
alert( "error deleting record" );
})
.always(function() {
alert( "Operation completed" );
});
</script>
在php方面,在example.php中,如果$_SERVER['REQUEST_METHOD']
等于"POST"
,您需要调整代码以包含一些处理,如果是,则在您的查询字符串中放置:
"DELETE FROM books WHERE Book_Number='{$_POST['book_id']}'";
请记住,尽管这可能有效,但从SQL注入开始并不安全,您需要使用some form of escaping来保护您的查询免受SQL注入。
另一种方法是将删除按钮用作表单的提交按钮,其中传递了book_number并执行相同操作,但这次没有Javascript部分。这会强制页面重新加载。