gpt4 book ai didi

PHP 存储、检索和编辑数据库中的数组

转载 作者:行者123 更新时间:2023-11-29 00:13:03 25 4
gpt4 key购买 nike

我对数组有疑问,我不是 PHP 的新手,但我有一点操作复杂数组的经验,就像我现在需要的那样。

我正在构建购物车,我对购物车的想法是每个用户都会拥有的数据库行,购物过程应该是这样的

当用户购买产品时,如果购物车脚本中不存在产品,则应将产品添加到购物车,例如1=1 或数组词 $cart = [ [1]=>'1' ] 这意味着产品 ID1 数量 1,现在如果产品已经存在于购物车脚本中应该只更新数量,例如1=2 以此类推。

这是我完成上述任务的拙劣尝试

PHP

<?php session_start();

require_once('config.php');

$member_id = '1'; // Test data
$pr_id = filter_input(INPUT_POST, 'pr_id', FILTER_SANITIZE_STRING); // Sending ID with jQuery/AJAX which works fine of course
$pr_qty = '1'; // Start quantity
$up_qty = '5'; // Test data

try {
$getCart = $conn->prepare("SELECT cart FROM members WHERE member_id = :member_id ");
$getCart->bindParam(':member_id', $member_id);
$getCart->execute();
$cart = $getCart->fetch(PDO::FETCH_ASSOC);

if(array_key_exists($pr_id, $cart)) {
$cart[$pr_id] = $up_qty . ',';
}
else {
$cart[$pr_id] = $pr_qty . ',';
}

$updateCart = $conn->prepare("UPDATE members SET cart = :cart WHERE member_id = :member_id ");
$updateCart->bindParam(':member_id', $member_id);
$updateCart->bindParam(':cart', implode($cart));

if($updateCart->execute()) {
echo '1';
}

}
catch(PDOException $error) {
echo 'Error: ' . $error->getMessage();
}

$conn = null;
?>

稍后我应该能够从数据库中检索产品 ID 和数量,但是当时间到了......

我在这上面工作了大约三天,我很绝望,我到处搜索,找到很多关于多维数组的教程,但我认为我的问题有点独特,或者我太笨了,无法解决

先谢谢大家,希望大家一起解决,多动脑=多知识=解决;)

最佳答案

如果我对您的问题的理解正确,实现此目的的一种方法是让每个购物车有多个数据库行,而不是将所有数据编码为一个。我会提出一个有点像这样的数据库结构:

Database Diagram

这样就把一切完全分开了,这样编辑和扩展就简单多了。例如,这种方式可以让用户拥有多个购物车变得非常容易,就像亚马逊所做的那样!

这大大简化了代码!

我不会为你写出代码,因为我没有时间,但我会稍微解释一下它是如何工作的,这样你就可以自己动手了!

检索购物车:

您可以通过以下方式获取属于用户的任何购物车:

  • 获取用户id
  • 正在使用该用户 ID 从购物车表中搜索 cart_id。如果每个用户只有一个,请选择第一个。
  • 从 Cart_items 表中选择具有该 cart_id 的所有行。这将为您提供该购物车中的每个产品
  • 要获取每个产品的信息,请使用其 PID 从 Products 表中选择该产品行。

添加项目:

  • 如上获取购物车ID
  • 检查是否存在包含产品 ID 和购物车 ID 的行
  • 如果有,增加数量(见下文)
  • 如果没有,则创建该行。

编辑项目:

  • 如上获取购物车 ID。
  • 获取您要编辑的产品的产品 ID
  • 使用这 2 个 ID 更新 Cart_items 的那一行以更改数量等。

希望对您有所帮助!

关于PHP 存储、检索和编辑数据库中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099977/

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