【问题标题】:Add 'delete' button to php results table将“删除”按钮添加到 php 结果表
【发布时间】:2017-01-14 18:14:48
【问题描述】:

我将 MySQL 表的结果输出到 HTML 表中,我正在尝试添加删除按钮来删除用户,但它不起作用。

HTML 表单代码:

<?php 
        $response = $bdd->query('SELECT * FROM users');
        $i = 1;
        while ($datas = $response->fetch()) {
?>
<tr>
    <td><?php echo $datas['first_name']; ?></td>
    <td><?php echo $datas['last_name']; ?></td>
    <td>
        <form action="_delete.php?id=<?php echo $datas['id']; ?>" method="post">
            <input type="hidden" name="name" value="<?php echo $datas['id'];?>">
            <input class="btn btn-danger" type="submit" name="submit" value="X">
        </form>
    </td>
</tr>

这是我的 _delete.php :

<?php
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'root', 'root');
}
catch (Exception $e)
{
        die('Erreur : ' . $e->getMessage());
}
?>

<?php
$id = (int)$_GET['id'];
$query = "DELETE FROM users WHERE id={$id} LIMIT 1";

//sends the query
mysql_query ($query);

if (mysql_affected_rows() == 1) { 
?>

   <strong>User Has Been Deleted</strong>

<?php
 } else { 
?>

   <strong>Deletion Failed</strong>

<?php
} 
?>

我的结果 url 很好 /_delete.php?id=13 但删除脚本不是。

我有这个错误:Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future

有什么想法吗?

【问题讨论】:

  • 我不想问,但您是否已经将 mysql_connect() 连接到数据库?
  • 是的,我将它包含在我的代码之前,
  • $datas 是从哪里填充的?并且您的 _delete.php?id 是 GET 方法,而不是 POST。在任何情况下,通过 php 和查询检查错误。您的“删除失败”对您没有帮助。
  • @Fred 我更新了我的代码,php 错误是:Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future

标签: php mysql forms


【解决方案1】:

你弄乱了 GET 和 POST 参数。您定义了一个名为 id 的 get 参数,其中包含您的 id 和一个名为 name 的帖子参数,其中还包含您的 id。

但目前您正尝试使用 $_POST 访问 get 参数(仅包含 post 参数)。

要解决您的问题,您应该使用$_GET['id']$_POST['name']

在每种情况下,请记住保护您的输入免受 sql 注入。目前,用户也可以传递其他任何东西。一个简单的转换为 int 就足够了。

$id = (int)$_GET['id'];
$query = "DELETE FROM users WHERE id={$id} LIMIT 1";

【讨论】:

  • 我尝试使用 $id = $_GET['id'];$id =$_POST['name']; 但同样的错误。
  • 我只是用你的方法更新了我的代码,它不起作用
【解决方案2】:

我在回答中加入了一些建议,试试看是否有效。 创建一个连接,然后使用 $_GET 而不是 $_POST 获取 ID。

<?php

$con=mysqli_connect("localhost","dbuser","dbpassword","dbname");

if($con==false){
    die("ERROR:Could not connect.". mysqli_connect_error());

}
 else{
$id=$_GET['id']
 $query = "DELETE FROM users WHERE id='$id' LIMIT 1";

 //sends the query
 mysql_query ($con,$query);

 if (mysql_affected_rows() == 1) { 
 ?>

  <strong>User Has Been Deleted</strong>

<?php
} else { 
?>

  <strong>Deletion Failed</strong>

<?php
} 
}
?>

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 2018-11-26
    • 2023-01-20
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 2018-01-27
    相关资源
    最近更新 更多