从';删除;表';其中id=';所选记录';


Delete from 'table' where id='selected record '?

我在回显行中用Delete按钮从表中选择记录。我希望在单击相应的"删除"按钮时能够删除记录。这是我的删除查询,从另一个查询中删除所选记录,但它不起作用!

$querytwo = 'DELETE FROM paginas WHERE id= $_POST["id"]';   

我做错了什么。它是什么?这是完整的代码。

    <?php
        include_once("config.php"); //this is the database connection
        $query = "SELECT * FROM paginas "; //selects from the table called paginas
        $result = mysqli_query($mysqli, $query);
            while($row = mysqli_fetch_assoc($result)) 
            {
            $pagetitle = $row['pagetitle'];
            $toevoeging = $row['toevoeging'];
            $message = $row['message'];
                echo '<article class="topcontent">
       <div class="mct">
        <h2>' . $pagetitle .'</h2>
       </div><br>
       <p class="post-info">'. $toevoeging . '</p>
       <p class="post-text"><br>'.$message.'</p>
      </article>
       <div class="deleteknop">
        <form method="post">';
   echo '<input type="hidden" name="id" value="'.$row['id'].'">
         <input name="delete" type="submit" value="Delete Now!">
        </form>
       </div>' ;
            }
        $querytwo = 'DELETE FROM paginas WHERE id= $_POST["id"]';
        if (isset($_POST['delete'])) //Deletes the query if 'delete' button is clicked
            {
                $resulttwo = $mysqli->query($querytwo);  
            }
            ?>

成功了。我把线路改成了$querytwo = "DELETE FROM paginas WHERE id= $_POST[id]";,这是正常的。虽然有一个警告通知说"Notice: Undefined index”,但多亏了error_reporting(0); ,我把它处理掉了

您需要使用双引号进行变量插值。对于单引号,您看到的确切字符串是作为数据库查询发送的,这不是一个有效的查询。类似这样的东西实际上会替换字符串中POST变量的值:

$querytwo = "DELETE FROM paginas WHERE id = $_POST[id]"

但是,将变量直接插入查询字符串是个坏主意,因为这可能会导致SQL注入漏洞。我建议查找参数化查询。

您可以:

$querytwo = 'DELETE FROM `paginas` WHERE id= ' . $row['id'] . ' LIMIT 1'; 

您可以使用:

$querytwo = 'DELETE FROM paginas WHERE id= $_POST["id"]';

不需要使用limit,您使用的是id作为引用,因此它将删除一条记录。