【问题标题】:Two Column Array from Two Column MySQL Table来自两列 MySQL 表的两列数组
【发布时间】:2013-09-22 01:30:00
【问题描述】:

我正在尝试编写一个脚本来做两件事:

1) 遍历一个两列表,然后将内容推送到一个两列数组中

2) 遍历那个两列数组(在 #1 中制作)并将其重新插入到两列 MySQL 表中。

这是我对第 1 件事的尝试:

//grab desired product options incase of 'undo'
$optionArray = array();
$fabricArray = array();
$optionSelect = "SELECT * FROM $clientOptions WHERE bag_id ='$bagID' ";
$optionResult = mysql_query($optionSelect, $db_bags);
while ($optionData = mysql_fetch_assoc($optionResult)){
        $optionSku = $optionData['option_sku']; 
        $fabricSku = $optionData['fabric_sku']; 
        array_push($optionArray, $optionSku);
        array_push($fabricArray, $fabricSku);
        array_push($optionArray, $fabricArray);
}
$_SESSION['options_array'] = $optionArray;

这是我对 #2 的尝试:

foreach ($_SESSION['options_array'] as $optionSku){
    foreach ($optionSku as $fabricSku){
        $insertOption = "INSERT INTO $clientOptions (bag_id, product_sku, option_sku, fabric_sku) VALUES ('$bagID', '$productSku', '$optionSku', '$fabricSku')";
        mysql_query($insertOption, $db_bags);
    }//end of fabric sku for loop
}//end of option sku for loop
  • 注意:是的,我必须这样做……不,我不能将它从一个 MySQL 表转移到下一个。是的,我必须使用会话。

一般用途:是对所有用户撤消一个删除功能。用户可以删除产品及其选项,然后通知“撤消”删除。刚刚删除的产品存储在会话中,选项(和结构)存储在会话数组中。

【问题讨论】:

  • 为什么不在数据库中放置一个标志来将字段标记为非活动状态,然后允许用户重新激活他们的记录?
  • 只是试图保持数据库轻量级。不希望存储用户添加和删除的每个产品

标签: php mysql arrays session foreach


【解决方案1】:

您正在构建的数组将如下所示:

optionArray[0] = optionSku
optionArray[1] = array(fabricSku)

等等……

如果想要完全的数据,你会想要这样的东西:

optionArray[0] = array(optionSku, fabricSku)

为此,您需要这样做:

while ($optionData = mysql_fetch_assoc($optionResult)){
        $optionSku = $optionData['option_sku']; 
        $fabricSku = $optionData['fabric_sku']; 
        array_push($optionArray, array($optionSku, $fabricSku));
}

我最终会将其简化为:

while ($optionData = mysql_fetch_assoc($optionResult)){
        array_push($optionArray, array($optionData['option_sku'], $optionData['fabric_sku']));
}

那么你的循环将是(虽然我不确定 bagID 或 productSku 来自哪里):

foreach($_SESSION['options_array'] as $optionSkuData) {
    $insertOption = "INSERT INTO $clientOptions (bag_id, product_sku, option_sku, fabric_sku) VALUES ('$bagID', '$productSku', '$optionSkuData[0]', '$optionSkuData[1]')";
    mysql_query($insertOption, $db_bags);
}

【讨论】:

  • 是的,做到了...谢谢。 productSku 和 BagID 是在脚本中从上面调用的。对我的问题并不重要,但感谢您的彻底
猜你喜欢
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多