我有以下代码,它显示了我在书籍表中的所有书籍。
<select id="booksToDelete">
<?php
foreach($bookTitles as $bookTitle) {
echo '<option>';
echo $bookTitle['Title'];
echo '</option>';
}
?>
</select>
<input type="submit" name="deleteBook" id="deleteBook" value="Delete Book" />
<?php
我希望能够根据用户在html页面上选择的选项删除任何书籍,但我不知道如何完成它。这就是我到目前为止所做的:
if(isset($_POST['deleteBook']))
$deleteQuery= 'DELETE FROM book WHERE Title=**I don't know what goes here**;
?>
请帮助!!
答案 0 :(得分:0)
正如chris85在评论部分指出的那样,您应该使用ID
来确定表中要删除的内容。如果有书籍具有相同的标题,则使用title
会导致多次删除。
让我们修复您的option
代码。我们将使用value
属性将ID
替换为值,而不是title
。还可以为name
字段使用select
属性。
这是在form
标签内吗?
<form method="POST" action=""> <!-- PUT THE PAGE WHERE YOU WILL PROCESS THE REQUEST TO THE ACTION ATTRIBUTE -->
<select name="booksToDelete" id="booksToDelete">
<?php
foreach($bookTitles as $bookTitle) {
echo '<option value="'.$bookTitle['id'].'">'; /** REPLACE CORRESPONDING INDEX WITH THE UNIQUE ID COLUMN OF THE book TABLE **/
echo $bookTitle['Title'];
echo '</option>';
}
?>
</select>
<input type="submit" name="deleteBook" id="deleteBook" value="Delete Book" />
</form>
然后一旦提交。顺便说一下,您使用什么mysql API连接到数据库或执行查询?对于此示例,我们使用mysqli_*
's prepared statement:
/** ESTABLISH YOUR CONNECTION **/
$con = new mysqli("host", "user", "password", "database"); /** REPLACE NECESSARY DATA **/
/* CHECK CONNECTION */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if(isset($_POST['deleteBook'])){
$deleteQuery = "DELETE FROM book WHERE id = ?"; /** REPLACE NECESSARY UNIQUE ID COLUMN **/
/* ^ */
$stmt = $con->prepare($deleteQuery);
$stmt->bind_param("i", $_POST["booksToDelete"]);
$stmt->execute();
$stmt->close();
}