正如chris85在評論部分指出的那樣,您應該使用ID
s來確定要在表格中刪除的內容。如果有書籍具有相同的標題,則使用title
會導致多重刪除。
讓我們修復您的option
標籤。我們將使用value
屬性將ID
作爲值,而不是title
。讓我們也爲您的select
字段使用name
屬性。
這是在一個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();
}
標題出現在引號中,但「標題」不是唯一的,你應該使用ID。如果問題是如何在選項中添加值,則需要添加屬性「值」。 – chris85