【问题标题】:Delete Current Row in Php在 PHP 中删除当前行
【发布时间】:2015-05-20 22:59:01
【问题描述】:

如何使用 php 从 Mysql 中删除当前行?

我想从我的 Mysql 数据库中搜索,每一行右侧都有一个删除按钮。 当我单击删除按钮时,应从数据库中删除当前行。 我试图在 php 中创建一个函数,其中包含要从数据库中删除的查询。但是当我在我的搜索块中调用它时它不起作用。

我创建了两个函数,一个在 PHP(命名为“hello”)中包含删除查询,另一个在 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>

【问题讨论】:

  • DELETE from... 是?还是那无关紧要?
  • 'Book_Number' 是单个行的唯一 ID。我正在使用该唯一编号删除特定行。
  • 在您的 DeleteRecord() 中,您需要插入记录的主键,即 onclick=DeleteRecord('"+pk + "')。在 javascript 函数中 - 将此值传递给 php.ini。在php中,设置必要的sql语句。
  • 我已经做到了。现在我已经简要解释了我尝试过的所有解决方案的问题。请查看!
  • 不要删除内容。只需有一个“隐藏”或“已删除”标志,当单击“删除”时可以将其更新为 1。

标签: php mysql


【解决方案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”,但该字段更标准“身份证”。

列名区分大小写,因此,如果您的查询无法正常工作,请检查所有内容的字符大小写。

【讨论】:

    【解决方案2】:

    您是否要在不刷新页面的情况下删除记录?

    如果是这样,您可以通过 javascript/jquery 删除该元素,并在删除功能上使用图书 ID 和要执行的操作对服务器进行 ajax 发布调用。

    jQuery 中,它看起来像(假设您在 book_number&lt;td&gt; 中输入了一个 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 部分。这将强制页面重新加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多