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. 您需要数据库连接才能做到这一点。
  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 回答