我正在尝试编写一个允许我从下拉列表中删除所选值的函数。
<?php
require_once("db.inc.php");
?>
</head>
<body>
<form action="" method="POST">
<?php
$stmt = $mysqli->prepare("SELECT anr, name FROM artikel");
$stmt->execute();
$stmt->bind_result($anr, $name);
echo "<select name='selected_name'><br />";
while ($stmt->fetch()) {
echo '<option value='.$anr.'>'.$anr.' | '.$name.'</option>';
if(isset($_POST['loeschen'])){
$stmt = $mysqli->prepare("DELETE FROM artikel WHERE anr=?");
$stmt->bind_param('i', $anr);
$stmt->execute();
$stmt->close();
$mysqli->close();
}
}
?>
<input type="submit" value="Datensatz löschen" name="loeschen">
</form>
</body>
</html>
我的问题是,即使我没有按下提交按钮,也会删除这些值。提前感谢您的建议。
答案 0 :(得分:1)
使用Post值而不是$ anr。
<?php
require_once("db.inc.php");
?>
</head>
<body>
<?php
if(isset($_POST['selected_name'])){
$stmt = $mysqli->prepare("DELETE FROM artikel WHERE anr=?");
$stmt->bind_param('i', $_POST['selected_name']);
$stmt->execute();
$stmt->close();
$mysqli->close();
}
}
?>
<form action="" method="POST">
<?php
$stmt = $mysqli->prepare("SELECT anr, name FROM artikel");
$stmt->execute();
$stmt->bind_result($anr, $name);
echo "<select name='selected_name'><br />";
while ($stmt->fetch()) {
echo '<option value='.$anr.'>'.$anr.' | '.$name.'</option>';
}
echo "</select>";
?>
<input type="submit" value="Datensatz löschen" name="loeschen">
</form>
</body>
</html>
答案 1 :(得分:0)
唯一的错误是使用<{p>下面的$stmt->bind_param('i', $anr)
而不是
$stmt->bind_param('i', $_POST['selected_name']));