我编写了一个程序,在数据库表中列的所有行中插入一个数组,相对于同一个数据库同一个表中已经填充的列。
但它似乎没有正常工作。请告诉我哪里出错了!
$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次。我该如何解决这个问题呢?
经过大量的试验,我知道问题在于调用数组。所以,如果有人能告诉我如何在上面编写的代码的同时调用这两个数组,我将非常感激。
答案 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/>';
}}
试过同样的事情..但得到相同的输出......