返回碼定義:1=成功、2=未登錄、3=已存在、4=出錯、5=無商品。
<?php
session_start();
header("Content-Type: text/html; charset=UTF-8");
require("system/system.inc.php");
$reback = '0';
if (empty($_SESSION['member'])) {
$reback = '2'; // 未登錄
} else {
$key = $_GET['key'];
if (empty($key)) {
$reback = '5'; // 無商品
} else {
$boo = false;
$sql = "SELECT id, shopping FROM tb_user WHERE name = '{$_SESSION['member']}'";
$shopcont = $admindb->ExecSQL($sql, $conn);
if (!empty($shopcont[0]['shopping'])) {
$arr = explode('@', $shopcont[0]['shopping']);
foreach ($arr as $value) {
$tmp = explode(',', $value);
if ($key == $tmp[0]) {
$reback = '3'; // 已存在
$boo = true;
break;
}
}
if (!$boo) {
// 追加商品:@商品ID,數量
$shopcont[0]['shopping'] .= '@' . $key . ',1';
$update = "UPDATE tb_user SET shopping = '{$shopcont[0]['shopping']}' WHERE name = '{$_SESSION['member']}'";
$reback = $admindb->ExecSQL($update, $conn) ? '1' : '4';
}
} else {
// 首次添加
$update = "UPDATE tb_user SET shopping = '{$key},1' WHERE name = '{$_SESSION['member']}'";
$reback = $admindb->ExecSQL($update, $conn) ? '1' : '4';
}
}
}
echo $reback;
shopping 字段存儲格式:商品ID,數量@商品ID,數量@...
@ 分隔不同商品, 分隔商品 ID 與數量explode('@') → 遍歷 explode(',')intval($key) 強制轉整數SELECT ... FOR UPDATEcart 表(user_id, goods_id, qty, add_time)更利於擴展當前方案適用於中小型項目快速原型,生產環境建議重構為關聯表模式。