SQL按行删除行

时间:2016-05-01 14:44:15

标签: php mysql sql database

我试图通过id删除SQL数据库中的一行。我在这里找到了与此相关的问题,但似乎没有任何效果,可能是因为我的页面是基于选择变量而填充(动态?)。行基于下拉列表(locationlab)显示在我的页面上,每行后面都有一个删除按钮。 It looks like this.

我在行的末尾暂时显示了Id,只需确保代码看到变量(& it does!)。

填充页面的代码如下所示:

<?php
    $locationlab = $_POST[locationlab];
    $sql = "SELECT * FROM lab WHERE locationlab LIKE '{$locationlab}'";
    echo($locationlab);
    $result = $conn->query($sql);
     if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo'
  <table>
  <form action=testpage2.php method=post>
    <td width="10%"><input type=text name=make value='. $row["make"].'></td>
    <td width="10%"><input type=text name=model value='. $row["model"].'></td>
    <td width="20%"><input type=text name=hostname value='. $row["hostname"].'></td>
    <td width="15%"><input type=text name=ipaddress value='. $row["ipaddress"].'></td>
    <td width="20%"><input type=text name=ipmiipaddress value='. $row["ipmiipaddress"].'></td>
    <td width="15%"><input type=text name=terminalserveraddress value='. $row["terminalserveraddress"].'></td>
    <td width="10%"><input type=text name=locationlab value='. $row["locationlab"].'></td>
    <td><input type=submit name=update value=update></td>
    <td><input type=submit name=delete value=delete></td>
    <td id=id name=id value='. $row["id"].'>'. $row["id"].'</td>
</table>
</form>';
        }}
        ?>

我可以在phpMyAdmin页面中手动输入下面的SQL查询,所以我知道它是正确的。 “删除”按钮的代码如下所示:

   <?php
if(isset($_POST['delete'])) {
$deletequery = ("DELETE * FROM lab WHERE ='$_POST[id]'");
mysql_query($deletequery, $conn);  
};
?>

当我点击删除按钮时,它似乎刷新页面但没有任何变化。我想如果我可以让删除按钮工作,更新将以类似的方式工作,但现在我很难过。

2 个答案:

答案 0 :(得分:0)

<?php
if(isset($_POST['delete'])) {
    $deletequery = ("DELETE FROM lab WHERE **columnName** ='$_POST[id]'");
    mysql_query($deletequery, $conn);  
}
?>

您在查询中缺少列名称。 DELETE语句中也没有*,因为删除意味着删除行。

答案 1 :(得分:0)

首先让我帮你格式化代码

你不应该在echo中写完整个HTML代码......

而不是尝试这个......

<?php
while($row = $result->fetch_assoc()) {
?>
<table>
<form action="testpage2.php" method="pos">
   <td width="10%"><input type="text" name="make" value="<?= $row["make"] ?>"></td>
 ....
 ....

</table>
</form>
  <?php
    }
  ?>

你也应该使用mysqli而不是mysql

并且您的数据库查询也不正确,它必须是这样的..

DELETE FROM lab WHERE id ='$_POST[id]'

如果您使用mysqli,那么您也可以使用这样的函数..

mysqli_query($con,$deletequery)
if(mysqli_errno($con))
{
    echo("SOme error while executing query : ".mysqli_error($con));
}