Php 可以找到获取此查询的方法
我想不出解决问题的办法,有没有更好的办法 它应该检查数据是否存在,如果存在,则使用数据和新数量的总和更新最后一个表数量。如果不存在,则创建表。但我无法让它工作,表只是更新。(数据库中没有数据) 以下是我的php:Php 可以找到获取此查询的方法,php,database,mysqli,Php,Database,Mysqli,我想不出解决问题的办法,有没有更好的办法 它应该检查数据是否存在,如果存在,则使用数据和新数量的总和更新最后一个表数量。如果不存在,则创建表。但我无法让它工作,表只是更新。(数据库中没有数据) 以下是我的php: $SESSID = session_id(); //(session_id,bid,date_added,qty) $q = "SELECT quantity FROM cart WHERE session_id = '$SESSID' AND item_id = '$itemID'
$SESSID = session_id();
//(session_id,bid,date_added,qty)
$q = "SELECT quantity FROM cart WHERE session_id = '$SESSID' AND item_id = '$itemID'";
$r = mysqli_query($dbc, $q);
$check = mysqli_fetch_assoc($r);
if($check=='' && $r==FALSE){
$addtocart = "INSERT INTO cart (item_id, quantity, date_added, session_id) VALUES ('$itemID', '$qty', '$datetime', '$SESSID')";
echo 'create';
}else{
$total = $r + $qty;
echo $total;
$addtocart = "UPDATE cart SET quantity = '$total' WHERE session_id = '$SESSID' AND item_id = '$itemID'";
echo 'update';
}
$r = mysqli_query($dbc, $addtocart);
//go to showcart
/*header("location:../tienda?cart");*/
exit;
}
仅尝试一个查询:
INSERT INTO `cart` (`item_id`, `quantity`, `datetime`, `session_id`)
VALUES ('$itemID', '$qty', '$datetime', '$SESSID')
ON DUPLICATE KEY UPDATE `qty`=`qty`+values(`qty`)
这假设您的数据库表已正确构建,并且在
(`item\u id`、`session\u id`)上有一个唯一键,
您可以在重复键更新时使用插入忽略
和:
INSERT IGNORE INTO `cart` (`item_id`, `quantity`, `datetime`, `session_id`)
VALUES ('$itemID', '$qty', '$datetime', '$SESSID')
ON DUPLICATE KEY UPDATE `qty`=`qty`+values(`qty`)
假设item_id设置为unique
,则不需要在数据库中定义键?mysqli_fetch_assoc
如果没有更多行可提取,则返回NULL
。另外,使用准备好的语句可能是防止SQL注入的最简单方法。代码不止这些,我创建了用于停止SQL注入的代码,我只是添加了有用的代码。谢谢“mysqli\u fetch\u assoc”的解释。我有一个疑问。数量不能替换为数量限制?所以我必须在调用查询之前调用该值?sry,但是忽略对我来说不起作用,尽管答案很好,我无法想象忽略。