这是我的代码:
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更新记录。
我该如何解决这个问题?
答案 0 :(得分:0)
使用以下行:
$result = mysql_query($deal_update_sql) or die(mysql_error());
如果查询失败,将告诉您错误是什么。尽管从生产代码中取出die()。
我怀疑你的问题是你试图更新一个不存在的记录。您需要检查product_id是否存在,如果它存在则更新它,如果它没有插入它。
答案 1 :(得分:0)
三个要点:
您的代码非常容易受到SQL注入攻击,因为您没有清理输入。在查询中使用输入之前,请使用mysqli_real_escape_string来清理输入。
$id = mysqli_real_escape_string($link, $GET['id']); //Link will be your connection variable
不推荐使用mysql_ *函数。不要使用它们。请改用mysqli_ *函数。
逻辑错误。
if (isset GET id) {
check if id exists in db using select query
If (id exists in db)
update query
else
insert query
}
代码将是:
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
}