gpt4 book ai didi

php - 比较数组键并创建 MySQL 语句的方法

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

在我们正在构建的用户系统中,客户能够销售我们提供的多种产品。这些产品的数量并不太广泛,但我们可能会(并计划经常添加新产品)。当用户登录到他们的管理门户时,他们可以从提供的所有可用产品列表中启用或禁用他们想要销售的产品。

我们构建了一个表单,用于使用复选框和复选框 name="products[]" 接受“已启用”产品的值。大批。这部分一切正常。当我们尝试为输入的数据构建最佳的插入/更新方法时,这个问题就出现了。如果稍后(我们)向客户提供新产品,并选择启用该产品,则将插入值。只需选中或取消选中相应的产品复选框即可进行更新,从而启用或禁用该产品。

INSERTUPDATE if a product is currently disabled但如果产品当前在数据库中设置为启用,我无法提供一个数组来正确地将产品更新为“禁用”。

 foreach($_REQUEST['products'] as $productID) {
if ( array_key_exists($productID, $_SESSION['productsOffered']) && $_SESSION['productsOffered'][$productID]['status'] == 0) {
echo 'this product would be turned active.';
echo "<br>";
}
elseif ( array_key_exists($productID, $_SESSION['productsOffered']) && $_SESSION['MYADMIN']['products'][$productID]['status'] == 1) {
echo 'this product would be turned inactive.';
echo "<br>";
<b>THIS IS THE LOGIC WHICH DOES NOT WORK</b>
}
elseif ( !array_key_exists($productID, $_SESSION['MYADMIN']['products']) ) {
echo 'insert';
echo "<br>";
}
}

如前所述,这里的 IF 和最后的 elseif 工作正常,但中间的英语语句:“如果用户取消选中最初设置为事件的产品,则禁用该特定产品 ID”,这是不正确的。

感谢您提供的任何建议。

更新 1:初步想法

我相信可能有效的方法是构建所有当前 $_SESSION['productsOffered'] 的新数组。并找出哪些当前产品(在更新时)当前设置为事件状态。然后我就可以将新数组与 $_REQUEST['products'] 进行比较数组并确定哪些产品已被遗漏(或基本上未检查),然后可以更新适当的产品。

虽然我相信这个方法可能有效,但它看起来很草率。Update2:这也必须在当前的 foreach 请求之外完成,因为显然已停用的产品不会存在于 REQUEST 中。

更新3

根据请求,数组中的一些示例数据如下(这是非常简单的数据,接近“真实”):

$_SESSION['productsOffered'] = array(
[1] => Array
(
[ID] => 1,
[status] => 1,
[name] => Product 1,
)

[2] => Array
(
[ID] => 2,
[status] => 1,
[name] => Product 2,
)

);

$_REQUEST['products'] = array('1','2','3','4','5','6','7');

最佳答案

$_REQUEST['products'] 将仅包含已被用户标记为已检查的产品。所以它不会包含未经检查的产品。这意味着在上面的代码中,控件永远不会转到您想要执行的代码的第二部分。您可以在此处采取的一种方法是在用户提交表单时首先禁用所有产品。示例 SQL 如下:

$sql = "update product_table set disabled='true' where user_id = 'this_user_id'";

然后您可以迭代逻辑来标记用户选择的产品:

foreach($_REQUEST['products'] as $productID) {
if ( array_key_exists($productID, $_SESSION['productsOffered']) && $_SESSION['productsOffered'][$productID]['status'] == 0) {
echo 'this product would be turned active.';
echo "<br>";
}
elseif ( !array_key_exists($productID, $_SESSION['MYADMIN']['products']) ) {
echo 'insert';
echo "<br>";
}
}

这与您在更新 1:初步想法中发布的逻辑有些相似。更多信息(例如您的 $_SESSION['productsOffered'] 数组和示例 $_REQUEST['products'] 数组是什么)会很有帮助。

关于php - 比较数组键并创建 MySQL 语句的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17685533/

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