尝试使用PHP按钮删除MySQL行

尝试使用PHP按钮删除MySQL行,php,mysql,Php,Mysql,编辑:添加了viewProblems的全部代码,实际凭证信息仅*** 我一整天都在试着这么做,但我想不出来。我想要的是每行末尾的一个按钮(按钮正确显示),它允许我从MySQL数据库和页面中删除该行(但不删除任何内容)。我的守则如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-

编辑:添加了viewProblems的全部代码,实际凭证信息仅***

我一整天都在试着这么做,但我想不出来。我想要的是每行末尾的一个按钮(按钮正确显示),它允许我从MySQL数据库和页面中删除该行(但不删除任何内容)。我的守则如下:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="">
        <meta name="author" content="">

    <title>View Problems</title>

    <!-- Bootstrap core CSS -->
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
</head>

<body>

    <div class="well">
        <div class="container">
            <div class="page-header">
                <h1>Jimmy's Laundry</h1>
            </div>
        <ol class="breadcrumb">
              <li><a href="index.html">Home</a></li>
              <li><a href="login.html">Login</a></li>
              <li><a href="adminPage.php">Admin page</a></li>
        </ol>
        </div>
    </div>

        <?php
        $servername = "***";
        $username = "***";
        $password = "***";
        $dbname = "***";
        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) 
        {
             die("Connection failed: " . $conn->connect_error);
        }

        $sql = "SELECT problem_id, machine_id, description FROM tbl_problem";
        $result = $conn->query($sql);
        if ($result->num_rows > 0)
        {
            echo '<table class="table table-hover"><tr><th>Problem ID</th><th>Machine Number</th><th>Problem Description</th><th>     </th></tr>';

            while($row = $result->fetch_assoc())
            {
                echo "<tr><td>" . $row['problem_id']. "</td><td>" . $row['machine_id']. "</td><td>" . $row['description']. "</td><td><form action='deleteProblem.php?name=" . $row['problem_id']."' method= 'post'><input type='hidden' name='id' value=".$row['problem_id']."><input class ='btn btn-danger' type='submit' name='submit' value='Resolved?'></form></td></tr>";
            }
            echo "</table>";

        }
        else
        {
            echo "There are no problems! :)";
        }
        ?>
            </table>
</body>
<?php
$query= "DELETE FROM tbl_problem WHERE problem_id={$_POST['id']}";
mysql_query ($query);
if (mysql_affected_rows() == 1)
{
    echo "<strong>Row has been deleted</strong>"
}
else
{
    echo "<strong>Deletion Failed</strong>"
}?>

查看问题
吉米的洗衣店

  • 删除行的脚本是在单独请求中执行的单独脚本。因此,它与生成页面的请求完全隔离,如果要查询或删除数据,则必须建立新的数据库连接


    在您当前的情况下,您没有建立连接,因此delete语句失败。

    您可能不得不使用mysql_*()函数,但这并不能免除您编写易受攻击代码的责任。您只是假设您的查询永远不会失败。您是否检查了mysql_errors()?您没有显示如何/在何处连接到数据库,因此据我们所知,您的删除查询根本不会执行。开始调试:顶部的
    deleteProblem.php
    ass
    print\r($\u POST)回送
    $query
    ,然后再执行。您将在执行时看到确切的查询。尝试使用类似于
    mysql\u error()
    的函数来获取错误信息。您还可以尝试在PHPMyAdmin中执行该查询,并查看它是否在那里工作。@MarcB在喋喋不休地谈论SQL注入风险之前,为可怜的OP提供一个修复当前问题的机会。归根结底,如果他们的网站因为SQL注入而遭到黑客攻击,那是OP自己的错。@GolezTrol我在发表我的评论后注意到了这一点,但决定将其保留在MySQL API的混合上。从一个API跳到另一个API,然后说他/她不能使用
    mysqli\uuu
    是完全不清楚的。更不用说从一个API跳到另一个了;)因为这是一个不同的、孤立的脚本,所以这其实不重要。在第二个脚本中使用
    mysql\u connect
    可以很好地工作。但是,如果OP使用的是PHP5.5,那么即使连接代码使用的是
    mysql\uuuz
    函数,它也会因为不推荐而失败。至少,Wamp是这样的。但这将是下一个问题。婴儿步。:)@TheElm,我想你还没有读过问题的第一个脚本和下面的其他评论。