2017-05-08 9 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を使用する必要があります。この例では、mysqli_*'s prepared statementを使用することができます。また、タイトル/ IDを入力するときにクエリをパラメータ化する必要があります。オプションに値を入れる方法が質問であれば、 'value'属性を追加する必要があります。 – chris85

答えて

0

chris85がコメントセクションで指摘したように、IDを使用して、テーブルで何を削除するかを決定する必要があります。 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を使用していますか?

/** 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(); 

} 
関連する問題