通过GET更新和插入

时间:2015-03-17 10:40:19

标签: php mysql

这是我的代码:

if (isset($_GET['id']) && !empty($_GET['id'])) {
    $deal_update_sql = "UPDATE mydb.nl_dailydeals SET storeid = '5', cultureid = '10' WHERE product_id = ".$_GET["id"];
    $result = mysql_query($deal_update_sql);
}
else {
    $insert_query = "INSERT INTO admin_zuki_be.nl_dailydeals (product_id, storeid) VALUES (3, 2)";
    $result = mysql_query($insert_query);
}

此代码不起作用。无论我通过GET在URL中传递什么ID,都应该将其插入到数据库中。如果id已经存在于数据库中,那么它应该使用给定的id更新记录。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用以下行:

 $result = mysql_query($deal_update_sql) or die(mysql_error());

如果查询失败,将告诉您错误是什么。尽管从生产代码中取出die()。

我怀疑你的问题是你试图更新一个不存在的记录。您需要检查product_id是否存在,如果它存在则更新它,如果它没有插入它。

答案 1 :(得分:0)

三个要点:

  1. 您的代码非常容易受到SQL注入攻击,因为您没有清理输入。在查询中使用输入之前,请使用mysqli_real_escape_string来清理输入。

     $id = mysqli_real_escape_string($link, $GET['id']); //Link will be your connection variable
    
  2. 不推荐使用mysql_ *函数。不要使用它们。请改用mysqli_ *函数。

  3. 逻辑错误。

     if (isset GET id) {
      check if id exists in db using select query
      If  (id exists in db)
            update query
      else 
            insert query
    }
    
  4. 代码将是:

       if (isset($_GET['id']) && !empty($_GET['id'])) {
           $id = mysqli_real_escape_string($link, $GET['id']); //Link will be your connection variable
           $query = "SELECT product_id FROM mydb.nl_dailydeals WHERE product_id=". $id;
           if ($result = mysqli_query($link, $query)) {
                  //run your UPDATE query
            } else {
                // run your insert query
            }