PHP从数据库中删除

时间:2015-11-27 10:24:48

标签: php mysql pdo

我想从我的数据库中删除选定的行,但我不知道如何完成它。我对这个话题完全不熟悉,所以当你向我解释时,它会非常好。

这是我的代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title> PHP F1 - Datenbank</title>
    <style>
        button {
            margin:5px;
            margin-left:-0px;
        }
        .insert {
            position:relative;
            margin:0px;
            margin-bottom:5px;
            margin-top:-25px;
        }
    </style>
</head>
<body>
<h2> Insert Dokument für deine Datens&auml;tze ! </h2>
<form action="F1_PHP.php" method="post">
    <input type="text" name="jahr" placeholder="Albert-Park"> <br><br>
    <input type="text" name="sieger" placeholder="Australien"> <br><br>
    <input type="text" name="schnellster" placeholder="Melbourne"> <br><br>
    <input type="text" name="strecke" placeholder="Laenge"><br><br>
    <input type="submit" name="formdaten" class="insert" value="Insert">  <br>
</form>
<table border="1">
    <tr>
        <th></th>
        <th>Strecke</th>
        <th>Land</th>
        <th>Stadt</th>
        <th>L&auml;nge</th>
    </tr>
<?php

try {

    $server = 'mysql:dbname=f1;host=localhost';
    $user = 'root';
    $password = '';
    $options = array
    (
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    );
    $pdo = new PDO($server, $user, $password, $options);

    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    if ($pdo){
        if (isset($_POST["formdaten"])) {
            $jahr = $_POST["jahr"];
            $sieger = $_POST["sieger"];
            $schnellster = $_POST["schnellster"];
            $strecke = $_POST["strecke"];

            $eintrag = $pdo->prepare("INSERT INTO Strecke
            (pk_Strecke, Land, Stadt, Laenge) VALUES (?, ?, ?, ?);");


            $eintrag->execute(array($jahr, $sieger, $schnellster, $strecke));

            if ($eintrag == true) {
                echo "Eintrag war erfolgreich";
            } else {
                echo "Fehler";
            }
        }
    }
    }
catch (PDOException $error) {
    echo 'Verbindung fehlgeschlagen: ' . $error->getMessage();
}

try {
    $query= 'SELECT pk_Strecke, Land, Stadt, Laenge FROM Strecke';
    $stmt   = $pdo -> query($query);
    $deleteString = "";

    while( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
        echo '<tr>';
        echo ' <td>'."<input type='radio' name='markiert'>".'</td>';
        echo ' <td>'. $row["pk_Strecke"].'</td>';
        echo ' <td>'. $row["Land"]. '</td>';
        echo ' <td>'. $row["Stadt"]. '</td>';
        echo ' <td>'. $row["Laenge"]. '</td>';
        echo '</tr>';
    }
    echo '</table>';
}
catch (PDOException $error) {
    echo 'Fehler beim Lesen der Daten ' . $error->getMessage();
}

?>
<br>

    <input type="submit" name="delete" value="Delete">
    <?php
        // delete button

    ?>

    <input type="submit" name="update" value="Update">
    <?php
        //Update button

    ?>
<br>
<table border="1">
<tr>
   <th> </th>
   <th> Jahr               </th>
   <th> Sieger             </th>
   <th> Schnellste Runde   </th>
   <th> Strecke            </th>
</tr>
 <?php
 try {
   $query= 'SELECT pk_Jahr,Sieger,SchnellsteRunde,pk_fk_Strecke
                 FROM Rennen join Strecke on pk_fk_Strecke = pk_Strecke
                   order by pk_Jahr';
   $stmt   = $pdo -> query($query);
    while( $row = $stmt->fetch(PDO::FETCH_ASSOC) )
      {
       echo '<tr>';
         echo ' <td>'."<input type='radio' name='markiert'>".'</td>'; 
         echo ' <td>'. $row["pk_Jahr"].'</td>';
         echo ' <td>'. $row["Sieger"]. '</td>';
         echo ' <td>'. $row["SchnellsteRunde"]. '</td>';
         echo ' <td>'. $row["pk_fk_Strecke"]. '</td>';
       echo '</tr>';
       }
    echo '</table>';
}
catch (PDOException $error) {
    echo 'Fehler beim Lesen der Daten ' . $error->getMessage();
}   
?>
</body>
</html>

我感谢你的每一个提示。

2 个答案:

答案 0 :(得分:1)

使用以下声明:

$sql = "DELETE FROM `Rennen` WHERE `pk_Jahr` = :id_to_delete";
$query = $db->prepare( $sql );
$query->execute( array( ":id_to_delete" => 'Value of pk_Jahr of the row to delete' ) );

答案 1 :(得分:0)

看起来你很清楚如何设置PHP方面,所以我只是处理SQL部分。

使用PDO和MySQL进行删除的一般语法如下:

$query = "DELETE FROM TableName WHERE Field = :value";
$stmt = $pdo->prepare($query);
$stmt-> bindParam(':value', $value);
$stmt->execute();

您在该表上查询的字段必须是唯一的,除非您想要删除多行(因此最好使用字段和值的主键)。

看起来你在你的一张桌子上使用赛车电路,所以你的桌子看起来像这样(我称之为“电路”):

id(主键),电路,国家。

您可能包含以下数据:

1,澳大利亚艾伯特公园 2,银石,英国 3,澳大利亚阿德莱德

要从数据库中删除Albert Park,您可以运行:

$value = 1;
$query = "DELETE FROM circuits WHERE id = :value";
$stmt = $pdo->prepare($query);
$stmt-> bindParam(':value', $value);
$stmt->execute();

删除澳大利亚的所有电路(上述3条记录中的2条):

$value = "Australia;
$query = "DELETE FROM circuits WHERE country = :value";
$stmt = $pdo->prepare($query);
$stmt-> bindParam(':value', $value);
$stmt->execute();

您可以通过表单传递$ value的值,并使用bindParam()来防止SQL注入。