gpt4 book ai didi

php - 检查MySQL中的记录,如果不存在则创建

转载 作者:行者123 更新时间:2023-11-29 22:17:53 27 4
gpt4 key购买 nike

当我单击“立即购买”按钮时,我会检查记录(产品 ID)是否存在于我的 mysql 数据库表中,如果他们没有创建另一个记录,如果创建了,则只需更新现有记录。

它会很好地创建第一条记录,甚至当我再次单击它时会更新而不会创建另一条记录,但是当我单击另一个产品时,它会创建另一条记录,并且永远不会更新以下记录。

换句话说,它只更新第一个产品 ID,并为其余产品创建新记录。

这是我的 table 的图片 enter image description here

function add_to_cart(){

global $connection;

$ip = getIp();



if(isset($_GET['add'])) {

$product_id = $_GET['id'];
$product_price = get_item_price($product_id);


$query = "SELECT * FROM cart WHERE ip_address = '{$ip}' ";
$check_query = query($query);
confirm($check_query);
$row = fetch_array($check_query);
$db_product_id = $row['product_id'];

if(mysqli_num_rows($check_query) === 0 || $product_id != $db_product_id) {

$query = "INSERT INTO cart(product_id,ip_address,quantity,price_sum) VALUES('{$product_id}', '{$ip}' ,1, '{$product_price}')";

$send_query_cart = query($query);
confirm($send_query_cart);
redirect("index.php");

} else {

$query = "UPDATE cart SET quantity = quantity + 1, price_sum = price_sum + '{$product_price}' WHERE product_id = '{$product_id}' ";
$update_records = query($query);
confirm($update_records);
redirect("index.php");



}




}








}

最佳答案

可能最好的解决方案是对(我假设)product_idip_address 创建一个 UNIQUE 约束。

ALTER TABLE `cart` ADD UNIQUE `unique_index`(`ip_address`, `product_id`);

然后,我根本不会将商品的价格存储在购物车中。可以在元素表中查找元素的价格。订单完成后,您可以保存单个商品的价格,因为它可能会发生变化,但当它在购物车中时,您需要最新的价格。

完成此操作后,您的查询可以简化为

$query = "INSERT INTO cart(product_id,ip_address,quantity)
VALUES ('{$product_id}', '{$ip}', 1)
ON DUPLICATE KEY UPDATE
quantity = quantity+1";

您甚至不必检查它 - 查询将自动处理更新或插入。

此外,我不会依赖 ip_address 来识别用户 - 如果有人在开车时用手机购物,它很容易改变。同一路由器上的两个人可能对您的网站具有相同的 IP 地址。我会在 session 或安全 cookie 中保存一些内容,并使用它来识别它们。

要获得总数,您可以执行以下操作:

$totals = "SELECT cart.product_id, cart.quantity * products.price as product_price_total
FROM cart
LEFT JOIN products USING(products.id = cart.product_id)
WHERE ip_address = '{$ip}'";

关于php - 检查MySQL中的记录,如果不存在则创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31035820/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com