将格式化变量存储到MySQL DB中?

时间:2012-01-10 15:59:55

标签: php mysql sql

我通过简单地将数据从一个变量传递到另一个变量来实现这一点:

$CalcsSets = $DisplayCalcs;

不需要在第一个if()语句中使用循环,并且它插入了没有引号的数据但是突然间它停止工作并且我不确定为什么(它只开始显示最后一个整数),所以我使用更复杂的代码试图让它再次工作,如下所示。

以下是我正在使用的复杂代码:

for($i=1; $i<=$CalcSets; $i++){


$calculations = PerformCalc($min, $highest, $OperatorType);

echo 'Calculations performed for '.$SetText[$i];

  foreach ($calculations as $key => $DisplayCalcs) {
      echo $SetCalc[] = $DisplayCalcs.', ';  //stores calculations with ',' in 
                                            //array.
}

if($CalcSets == 1){

   for($i=0;$i<$CalcSets;$i++){
      $SetResults = $SetCalc[$i];
      echo '<strong>'.(string)$SetResults.'</strong>';              
   }
        DB_Insert($SetResults); 
}

它应该做的是将以下格式(1,2,3,4,5)的值插入到VARCHAR行的数据库中,但现在它显示的是最后一个没有逗号的整数。我原本只想存储整数而不是逗号,但我无法在每个整数后用逗号显示它,所以我按照前面提到的那样去了这条路线。

我意识到我可能会以错误的方式解决这个问题,但是如果你们中的任何一个人知道一个更容易,更短的方式去做我想做的事情,我会非常感谢你的帮助。

原因我这样做是因为在结果页面上,它需要以上述格式显示。

仅供参考,我确实检查了数据库行,目前仍然设置为VARCHAR,其长度为10

更新意图更清晰

好的,我要回到原点,尽量让我的意图变得清晰。我一直在重写这个代码片段的次数比我想算的多,而且我的大脑都是模糊的大声笑。

array1 = array(1, 2, 3, 4, 5, 6);

foreach(array1 as $key => $data){
  echo $data.',';

// will display 1,2,3,4,5,6, in browser.
}

if(is_true == 1){

INSERT ALL $data values into DB here. 

}

这就是我想以最简单的形式完成的事情,我只是难以实现我的目标。

第二次更新 - 解决主题

显然,DB字段必须设置为Text而不是VarChar。我想我们每天都会学到新东西。

再次感谢所有人的帮助。非常感谢!

3 个答案:

答案 0 :(得分:2)

仅在$calcSets == 1并且$i<$calcSets条件

时执行最后一个for循环

怎么样这样做

$SetCalc = "";
foreach ($calculations as $key => $DisplayCalcs) {
     echo $SetCalc .= $DisplayCalcs.', ';
}
DB_Insert("(".$SetCalc.")");

答案 1 :(得分:2)

您正在寻找格式化数字的implode()功能。

$formatted = implode(',', $calculations); // Produce 1,2,3,4,etc...

http://php.net/manual/en/function.implode.php

答案 2 :(得分:2)

我很抱歉,但是从原始代码中我没有多大意义,只关注最后的IF和包含的LOOP,我认为问题在于赋值语句:

$SetResults = $SetCalc[$i];

它应该使用。=进行连接。以下是它的外观:

if($CalcSets == 1){
   for($i=0;$i<$CalcSets;$i++){
      $SetResults .= $SetCalc[$i];
      echo '<strong>'.(string)$SetResults.'</strong>';              
   }
   DB_Insert($SetResults);
}

希望它有效!

我完全同意@KemalFadillah使用implode()方法的解决方案。从你的代码片段中,我了解$ calculate是存储主要值的数组,即Array(1,2,3,4,5)。所以你可以这样做:

$calculations = PerformCalc($min, $highest, $OperatorType);
$s = implode (', ', $calculations);
DB_Insert($s);

我希望这有道理吗?