删除按钮在PHP / MySQL中不起作用

时间:2017-01-11 16:57:57

标签: php html mysql

我的查询无法在deleteartikel.php中运行,它不会删除数据库中的任何内容。

在form.php中我创建了一个删除按钮,但它不会删除该行本身。我找不到错误。

form.php的

 <?php
include 'dbconnect.php';

$sql = "SELECT * FROM artikel";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
     // output data of each row
     while($row = $result->fetch_assoc()) {
         echo "<tr>";
         echo "<td>".$row['Productcode']."</td>";
         echo "<td>".$row['Product']."</td>";
         echo "<td>".$row['Type']."</td>";
         echo "<td>".$row['Fabriekcode']."</td>";
         echo "<td>".$row['Inkoopprijs']."</td>";
         echo "<td>".$row['Verkoopprijs']."</td>";
         echo "<td><form action='deleteartikel.php' method='post'>
         <input type='submit' name='delete' value='delete'>
         </form></td>";
     }
} else {
     echo "0 results";
}

$conn->close();
?>
</tbody>
</table>
</div>

<!-- Footer navigatie -->
<footer>&copy;ToolsForEver 2017 alle rechten voorbehouden.</footer>

</body>
</html>

deleteartikel.php

<?php
if(isset($_POST['delete'])) {

include('dbconnect.php');

$productcode = $_POST['Productcode'];

$conn->query("DELETE FROM artikel WHERE Productcode = '$productcode'");

header('Location: artikel.php');

}
?>

1 个答案:

答案 0 :(得分:1)

您永远不会发布产品代码,因此查询失败,没有发送任何值。您必须在表单中添加隐藏字段:

echo "<form action='deleteartikel.php' method='post'>
      <input type='hidden' name='Productcode' value='". $row['Productcode'] ."'> 
      <input type='submit' name='delete' value='delete'>
      </form>";

Little Bobby your script is at risk for SQL Injection Attacks. 了解preparedMySQLi语句。即使escaping the string也不安全! Don't believe it?

另外,正如弗雷德在上面指出的那样,表单不能是表格单元格的子表单,因此您需要重构代码,以便您有一个包含每行表格的表单。

在deleteartikel.php中检查错误会显示查询缺失值的问题。如果没有在脚本中进行错误检查,您可以在Web服务器的错误日志中找到错误。