使用mySQL从“select”语句中删除数据库列

时间:2017-05-08 23:19:46

标签: php html mysql sql database

我有以下代码,它显示了我在书籍表中的所有书籍。

<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 个答案:

答案 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();

}
相关问题