将数据库结果添加到数组并将另一个相应的数组填充到同一数据库表中

时间:2012-08-30 12:01:17

标签: php mysql arrays database

我编写了一个程序,在数据库表中列的所有行中插入一个数组,相对于同一个数据库同一个表中已经填充的列。

但它似乎没有正常工作。请告诉我哪里出错了!

$query = $sql = "SELECT A FROM `table`";
$result1 = mysql_query($query); 
while ($row = mysql_fetch_row($result1)) {

foreach($output as $value){
$count=sizeof($value); 

for($counter=0;$counter<$count;$counter++)
{

$query= "INSERT INTO `TABLE` (`B`) VALUES ('" . $value . "') WHERE A= $row[$counter] ";

$insert_col= mysql_query($query);

echo $query;
echo '<br/><br/>';
  }} 

} 

其中$output数组包含数组值,如下所示:

$output[0]= RD 3.56 , $output[1]= RD 5.56 , $output[2]= RD 4.86 

当我运行程序时,检查我的查询..输出如下:

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.144') WHERE A= 3r_1 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 2.436') WHERE A= 3r_1 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.624') WHERE A= 3r_1 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_1 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_1 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_1 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.144') WHERE A= 3r_2 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 2.436') WHERE A= 3r_2 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.624') WHERE A= 3r_2 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_2 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_2 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_2 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.144') WHERE A= 3r_3 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 2.436') WHERE A= 3r_3 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.624') WHERE A= 3r_3 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_3 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_3 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_3 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.144') WHERE A= 3r_4 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 2.436') WHERE A= 3r_4 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.624') WHERE A= 3r_4 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_4 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_4 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.60') WHERE A= 3r_4 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.144') WHERE A= 3r_5 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 2.436') WHERE A= 3r_5 

INSERT INTO `TABLE` (`B`) VALUES (' RD: 1.624') WHERE A= 3r_5

请帮忙!我差不多一个星期就在我的程序中发现了这个错误。

输出应该如下所示

INSERT INTO 'TABLE' SET B = ' RD: 1.144' WHERE A = '3r_1' 

INSERT INTO 'TABLE' SET B = ' RD: 2.436' WHERE A = '3r_2' 

INSERT INTO 'TABLE' SET B = ' RD: 1.624' WHERE A = '3r_3' 

INSERT INTO 'TABLE' SET B = ' RD: 1.560' WHERE A = '3r_4' 

INSERT INTO 'TABLE' SET B = ' RD: 1.560' WHERE A = '3r_5' 

INSERT INTO 'TABLE' SET B = ' RD: 1.560' WHERE A = '3r_6'

此处的问题是$row值对所有$output值重复6次。我该如何解决这个问题呢?

经过大量的试验,我知道问题在于调用数组。所以,如果有人能告诉我如何在上面编写的代码的同时调用这两个数组,我将非常感激。

4 个答案:

答案 0 :(得分:1)

试试这个语法:

$query= "INSERT INTO 'TABLE' SET B = '" . $value . "' WHERE A = '$row[$counter]' ";

顺便说一句,表名5极其奇怪。

答案 1 :(得分:1)

你是否正在尝试更像这样的事情

$i = 1;
$query = "SELECT A FROM `table`";
$result1 = mysql_query($query);
while ($row = mysql_fetch_row($result1)) {

    $query = "INSERT INTO `TABLE` (`B`) VALUES ('" . $output[$i] . "') WHERE `A` = '".$row[0]."' ";

    $insert_col = mysql_query($query);

    $i++;

    echo $query;
    echo '<br/><br/>';

}

答案 2 :(得分:1)

据我所知,你有一个循环问题。

您有两个需要同时增加的列表。

试试这个:

$value = [' RD: 1.144', ' RD: 2.436', ' RD: 1.624', ' RD: 1.560', ' RD: 1.560', ' RD: 1.560'];
$row = ['3r_1', '3r_2', '3r_3', '3r_4', '3r_5', '3r_6'];

$cnt = count($row);//assuming $row and $value are of the same size

for($i = 0; $i < $cnt, $i++) {
    echo "INSERT INTO 'TABLE' SET B = '$value[$i]' WHERE A = '$row[$i]' ";
}

这是一个更简单的例子,但基本上,这就是你需要做的事情。

答案 3 :(得分:0)

while ($row = mysql_fetch_row($result1)) {

foreach($output as $key=>$value){

$query = "INSERT INTO `TABLE` (`B`) VALUES ('" . $value . "') WHERE `A` = '".$row[$key]."' ";

$insert_col= mysql_query($query);

echo $query;
echo '<br/><br/>';
  }}

试过同样的事情..但得到相同的输出......