在Php中删除当前行

时间:2015-05-20 22:59:02

标签: php mysql

如何使用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>

2 个答案:

答案 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部分。这会强制页面重新加载。