我的查询无法在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>©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');
}
?>
答案 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. 了解prepared的MySQLi语句。即使escaping the string也不安全! Don't believe it?
另外,正如弗雷德在上面指出的那样,表单不能是表格单元格的子表单,因此您需要重构代码,以便您有一个包含每行表格的表单。
在deleteartikel.php中检查错误会显示查询缺失值的问题。如果没有在脚本中进行错误检查,您可以在Web服务器的错误日志中找到错误。