无法用php脚本删除记录

时间:2014-12-27 20:45:05

标签: php mysql

当我去produkdelete.php我可以查看我要删除的记录,但当我确认删除时没有删除记录

这是我的剧本:

$key = @$_GET["key"];

case "I": // Get a record to display

   $tkey = $key;
   $strsql = "SELECT * FROM `produk` WHERE `id`=".$tkey;

   $rs = mysql_query($strsql, $conn) or die(mysql_error());

    if (mysql_num_rows($rs) == 0)
    {
        ob_end_clean();
        header("Location: "."produklist.php");
    }

    $row = mysql_fetch_assoc($rs);
    $x_id = $row["id"];
    $x_kdprod = $row["kdprod"];
    $x_namaprod = $row["namaprod"];
    $x_diskripsi = $row["diskripsi"];
    $x_harga = $row["harga"];

    mysql_free_result($rs);
    break;

case "D": // Delete

    // Open record
    $tkey = $key;
    $strsql = "DELETE FROM `produk` WHERE `id`=".$tkey;

    $rs = mysql_query($strsql, $conn) or die(mysql_error());

    mysql_free_result($rs);
    mysql_close($conn);

    ob_end_clean();
    header("Location: produklist.php");
    break;

关键变量是从“produkdelete.php?key =”发送的.urlencode($ row [“id”]);

每次我运行这个输出都是这样的:

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“=”附近使用正确的语法

1 个答案:

答案 0 :(得分:0)

在SQL Management Studio中,这不会运行。

$strsql = "DELETE FROM {produk {1}} ID为WHERE

丢掉`,它应该执行。

使用PDO增加安全性(以下说明)

=".$tkey;

这应该在您的服务器上执行。它使用PDO模块创建 $myServer = "put url to your server here"; $myDB = "put name of database here"; $name = "login name db"; $pw= "password db"; try { $dbConn = new PDO("mysql:host=$myServer;dbname=$myDB", $name, $pw); } catch( PDOException $Exception ) { //Uncomment code to show error //var_dump($Exception); } function doPDOQuery($sql, queryArguments = array()) { $sth = $db->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); $sth->execute($queryArguments ); } $sql = 'SELECT * FROM produk WHERE id= :id'; doPDOQuery( $sql, array(":id" -> $tkey) ); 。这意味着查询本身是由数据库驱动程序本身创建的。这会阻止prepared queries。这就是为什么弃用SQL-injection的原因。

对于MySQL_functionsdeleteupdate,上述代码就足够了。您需要执行insert来检索$sth->fetchAll()

中的行

Why are PHP's mysql_ functions deprecated?