Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用循环将记录插入数据库_Php_Oracle - Fatal编程技术网

Php 如何使用循环将记录插入数据库

Php 如何使用循环将记录插入数据库,php,oracle,Php,Oracle,这是我的代码: [G_TEST_CC] = {COST_CENTER}; [G_TEST_PLANT] = {PLANT}; header("Location: ../83211_TEST_PM_MONTH/83211_TEST_PM_MONTH.php"); $MONTH = array(); $MONTH[ 1 ] = 'JAN'; $MONTH[ 2 ] = 'FEB'; $MONTH[ 3 ] = 'MAR'; $MONTH[ 4 ] = 'APR'; $MONTH[ 5 ] = '

这是我的代码:

[G_TEST_CC] = {COST_CENTER};
[G_TEST_PLANT] = {PLANT};
header("Location: ../83211_TEST_PM_MONTH/83211_TEST_PM_MONTH.php");

$MONTH = array();

$MONTH[ 1 ] = 'JAN';
$MONTH[ 2 ] = 'FEB';
$MONTH[ 3 ] = 'MAR';
$MONTH[ 4 ] = 'APR';
$MONTH[ 5 ] = 'MAY';
$MONTH[ 6 ] = 'JUN';
$MONTH[ 7 ] = 'JUL';
$MONTH[ 8 ] = 'AUG';
$MONTH[ 9 ] = 'SEP';
$MONTH[ 10 ] = 'OCT';
$MONTH[ 11 ] = 'NOV';
$MONTH[ 12 ] = 'DEC';


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


sc_lookup(dataset, "select max(ID) from CMS.SUM_TEST");

$MAXID = {dataset[0][0]};
$NEWMAXID = $MAXID + $i;


// SQL statement parameters
$insert_table  = 'EXPENSE_TEST_PM';      // Table name
$insert_fields = array(   // Field list, add as many as needed
     'ID' => "'$NEWMAXID'",
     'BUDGET_YEAR' => "'[GLOBAL_BUDGETYEAR]'",
    'VERSION' => "'[GLOBAL_VERSION]'",
    'PLANT' => "'[G_TEST_PLANT]'",
    'COST_CENTER' => "'[G_TEST_CC]'",
    'MONTH' => "'$MONTH[$i]'",
 );

// Insert record
$insert_sql = 'INSERT INTO ' . $insert_table
    . ' ('   . implode(', ', array_keys($insert_fields))   . ')'
    . ' VALUES ('    . implode(', ', array_values($insert_fields)) . ')';

sc_exec_sql($insert_sql);

}
[G_TEST_CC]={COST_CENTER};
[G_TEST_PLANT]={PLANT};
标题(“位置:../83211_TEST_PM_MONTH/83211_TEST_PM_MONTH.php”);
$MONTH=array();
$MONTH[1]=“一月”;
$MONTH[2]=‘FEB’;
$MONTH[3]=“三月”;
$MONTH[4]=‘APR’;
$MONTH[5]=“MAY”;
$MONTH[6]=‘JUN’;
$MONTH[7]=‘JUL’;
$MONTH[8]=“八月”;
$MONTH[9]=“九月”;
$MONTH[10]=“10月”;
$MONTH[11]=“11月”;
$MONTH[12]=“12月”;
对于($i=1;$i“$NEWMAXID””,
“预算年度”=>“[全球预算年度]”,
'版本'=>“'[GLOBAL_VERSION]'”,
“工厂”=>“[G_测试工厂]”,
“成本中心”=>“[G\U测试抄送]”,
'月份'=>“'$MONTH[$i]'”,
);
//插入记录
$insert_sql='insert INTO'$插入表格
. ' (“.内爆(”,“,数组_键($insert_字段))。”
. ' 值(“.内爆(“,”,数组值($insert_字段)))”;
sc_exec_sql($insert_sql);
}
我想根据工厂和成本中心添加许多记录,但即使提交不同的工厂和成本中心,我也只得到12条记录

这些图像可能有助于理解问题:

正如Dipanwita Kundu所说,您的循环将在12次迭代后停止。如果需要更多的插入,可能需要在第一个循环中添加一个或两个循环来获取值。 我还建议您只执行一个插入请求,而不是通过迭代执行一个,并且不要使用字符串连接。诸如此类:

// set fields
$fields = ['ID', 'BUDGET_YEAR', 'VERSION', 'PLANT', 'COST_CENTER', 'MONTH'];

// set max id
sc_lookup(dataset, "select max(ID) from CMS.SUM_TEST");
$id = {dataset[0][0]};

// set sql
$insert_table  = 'EXPENSE_TEST_PM';      // Table name
$insert_sql = 'INSERT INTO ' . $insert_table . ' ('   . implode(', ', $fields)   . ') VALUES ';

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

    // you need to add new loop(s) here to get every data from active month
    // it depends on your variables format
    // here I assume that your PLANT and COST_CENTER are indexed by month
    // for (...) // loop for cost center
        // for (...) loop for plant
            // SQL statement parameters
            $insert_sql .= '('
                . $id
                . '{GLOBAL_BUDGETYEAR[0][0]}'
                . '{GLOBAL_VERSION[0][0]}'
                . '{PLANT[' . $i . '][' . $plantIndex. ']})'
                . '{COST_CENTER[' . $i . '][' . $costCenterIndex . ']})'
                . $i
                . '),';
            $id++;

        // }
    // } // end new loop
}
// remove last ","
$insert_sql = trim($insert_sql, ',');

// Insert records
sc_exec_sql($insert_sql);
//设置字段
$fields=['ID'、'预算年'、'版本'、'工厂'、'成本中心'、'月份'];
//设置最大id
sc_查找(数据集,“从CMS.SUM_测试中选择最大值(ID)”;
$id={dataset[0][0]};
//设置sql
$insert_table='EXPENSE_TEST_PM';//表名
$insert_sql='insert INTO'$插入表格。”(“.内爆(”,“,$fields)。”)值“;

对于($i=1;$iAs,您的循环将一直执行到i=12,因此您只能使用12个insertI因为这个月只有12个insertI,我如何才能为每个工厂和成本中心保存12条记录?永远不要使用字符串连接将参数包含到SQL中:改为使用参数(或显示白名单值的证据:但这很难做到).正在进行的SQL注入令人尴尬。