0

データベースの行を削除しようとしているので、ボタンをクリックするとその行が削除されます。私は見回して例を見つけましたが、これらは外部PHPシートに関連していますが、同じシートに私のものを含めようとしています. 私のコードは次のとおりです。

if(isset($_GET['deleteId']))
{ 
        $query = mysql_query("DELETE FROM kingswinfordcc_vehicles WHERE vehicleid = '$_GET['deleteId']'");
        header("Location: vehicle-table.php");  
} 

私が正しければ、指定されたテーブルから行を削除し、ユーザーを新しいページに移動します。

次に、次のように、現在リンクとして使用しているボタンがテーブルに保持されているため、リンクをクリックすると同じページに戻ります

    <td> <a href="vehicle-table.php?deleteId=<?php echo $vehicle_row['vehicleid'] ?>">Delete</a></td>

先輩に言われた通りにやっているだけです。アドバイス/ヘルプをいただければ幸いです。

4

3 に答える 3

1

このようなことができ、フォームのアクションがクリックしたいボタンと同じページにつながるようにすることができます

if(!isset($_GET['deleteId'])
{
    $mysqli = new mysqli("host", "user", "pass", "table");

    $sql = "DELETE FROM kingswinfordcc_vehicles
            WHERE vehicleid = ?"

    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param('i', $_GET['deleteId']);
    $stmt->execute();
    $stmt->close();

    $mysqli->close();
}

アイテムを完全に削除したいという確認を追加することを強くお勧めします。また、try/catchステートメントを追加することもできます。

于 2013-10-29T14:27:23.363 に答える
0

クエリに同じタイプの引用符が複数含まれています。私は次のことがうまくいくと思います:

if(isset($_GET['deleteId']))
{ 
     $query = mysql_query('DELETE FROM kingswinfordcc_vehicles WHERE vehicleid = ' . mysql_real_escape_string($_GET['deleteId']));
     header("Location: vehicle-table.php");  
}
于 2013-10-29T14:13:39.433 に答える
0
  1. そのためにはDB接続が必要です。
  2. 非推奨の mysql_* 関数を使用しないでください。mysqlipdoを確認してください。
  3. SQL インジェクションについて読む

アカデミック向けなので、mysql_* 関数を使用して非常に簡単な答えを提供します

$id = intval($_GET['deleteId'], 0); //this function parses the param to int if it is not number there will be 0
if($id) //checking if id is true(not zero)
{ 
    $query = mysql_query("DELETE FROM `kingswinfordcc_vehicles` WHERE `vehicleid` = '$id'");
    header("Location: vehicle-table.php");  //after query moving to vehicle-table.php if query fail and show msg it this line won't move user to this page!
} 

このようなクエリを実行するには、mysql 接続が必要であることを忘れないでください。

PDO ソリューション:

<?php
/* Connect to an ODBC database using driver invocation */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1'; //fill with proper data
$user = 'dbuser'; 
$password = 'dbpass';
$id = (int)$_GET['id'];
try{
    $dbh = new PDO($dsn, $user, $password);
    $st  = $a->prepare("UPDATE `users` SET user=:id");
    $st->bindParam(":id", $id, PDO::PARAM_INT);
    $st->execute();
    header("Location: vehicle-table.php"); 
    //echo $st->rowCount(); //this line will show how many rows were deleted
}
catch (PDOException $e){
    echo 'Error: ' . $e->getMessage();
}

?>
于 2013-10-29T14:15:59.457 に答える