2017-05-08 92 views
-1

我有以下代碼,它顯示了我的書籍表中的所有書籍。使用mySQL從「select」語句中刪除數據庫列

<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**; 
    ?> 

請幫忙!!

+1

標題出現在引號中,但「標題」不是唯一的,你應該使用ID。如果問題是如何在選項中添加值,則需要添加屬性「值」。 – chris85

回答

0

正如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(); 

}