PHP数组作为单独的行插入MySQL表。

PHP数组作为单独的行插入MySQL表。,php,mysql,arrays,insert,Php,Mysql,Arrays,Insert,我想使用php在mysql表中插入多行。数据在数组中,我尝试使用以下代码,但它不起作用。请帮帮我 查询字符串为: new_document.php?doctype=Inv&paytype=u&docno=3&bookno=31&prname=40329&pename=1001&paydate=07%2F22%2F2011&indate=7%2F30%2F2011&accname1=Man+Site&DrAmount1=20&

我想使用php在mysql表中插入多行。数据在数组中,我尝试使用以下代码,但它不起作用。请帮帮我

查询字符串为:

new_document.php?doctype=Inv&paytype=u&docno=3&bookno=31&prname=40329&pename=1001&paydate=07%2F22%2F2011&indate=7%2F30%2F2011&accname1=Man+Site&DrAmount1=20&CrAmount1=1&accname2=Man+Site&DrAmount2=0&CrAmount2=5&ref=Jul%2F2011

$rows=explode(&,$\u服务器['QUERY\u STRING']);
$rowcount=((计数($rows)-9)/3);//接收行的计数集,9是输入的成本数
$serialno=array();
$acc_name=array();
$debit=array();
$credit=array();
$serialno[]=$i;
数组_unshift($serialno,“”);
未设置($serialno[0]);
$acc_name[]=($_GET['accname'.$i]);
数组_unshift($acc_name,“”);
未设置($acc_名称[0]);
$debit[]=($_GET['DrAmount'.$i]);
数组_unshift($debit,“”);
未结算($debit[0]);
$credit[]=($_GET['CrAmount.$i]);
数组_unshift($credit,“”);
未设置($credit[0]);
回显“序列号:”。打印($serialno);
回显“
A/C名称:”。打印($acc\U名称); 回显“
借方金额:”。打印($Debit); 回显“
贷方金额:”。打印($贷方); 这给了我以下结果: 排列 ( [1] => 1 [2] => 2 ) 序列号:1阵列 ( [1] =>人工站点 [2] =>人工站点 ) A/C名称:1阵列 ( [1] => 20 [2] => 0 ) 借方金额:1阵列 ( [1] => 1 [2] => 5 ) 贷记金额:1 对于($i=1;$i=$rowcount;$i++) { $amount=($debit[$i]-$credit[$i]); $accname=$ACCU名称[$i]; $insert2=“插入'khata2'。'docitems' ( `dateinput`, `文件编号`, `项目编号`, `帐户名`, `金额`, `picrefno`, `updatestamp`) 价值观( 现在(“”), “$docno”, “$i”, “$accname”, “$amount”, “$docno”, 无效)”; } if(!mysql_query($insert2)){ 回显'
已保存零项!重试..
'; die('Error:'.mysql_Error()); 打破 } 回显“
”.$rowcount.“已插入记录”; 退出(); 结果如下: 致命错误:第184行的F:\server\htdocs\xampp\Khata2\processor\new_document.php中超过了30秒的最大执行时间(第184行为“$amount”)
忽略这是非常不安全的事实,下面是您的问题:

for($i=1;$i=$rowcount;$i++)

这可能是:


对于($i=1;$i忽略这是非常不安全的事实,您的问题是:

for($i=1;$i=$rowcount;$i++)

这可能是:

对于($i=1;$i1),您需要:

对于($i=1;$i1),您需要:


for($i=1;$i非常感谢您的回复。它现在正在工作,但只是在数组中插入了最后一组值。知道我做错了什么吗?干杯(很抱歉,我很痛苦)还有什么其他方法可以用来获得所需的结果?您可能会跳过第一个方法,因为PHP索引数组从0开始,而不是1。因此,请将
for
循环更改为从0开始。非常感谢您的回复。它现在正在工作,但只在数组中插入最后一组值。知道我做错了什么吗?干杯(很抱歉,这让我很痛苦)还有什么其他方法可以用来获得所需的结果?您可能会跳过第一种方法,因为PHP索引数组从0开始,而不是从1开始。因此将
FOR
循环更改为从0开始。
    $rows = explode("&", $_SERVER['QUERY_STRING']);
    $rowcount =((count($rows)-9)/3); // Count set of rows received , 9 is the costant no of inputs 

    $serialno = array();
    $acc_name = array();
    $debit = array();
    $credit = array();

    $serialno [] = $i;
    array_unshift($serialno,"");
    unset($serialno[0]); 

    $acc_name[] = ($_GET['accname'.$i]);
    array_unshift($acc_name,"");
    unset($acc_name[0]);

    $debit[] = ($_GET['DrAmount'.$i]);
    array_unshift($debit,"");
    unset($debit[0]);

    $credit[] = ($_GET['CrAmount'.$i]);
    array_unshift($credit,"");
    unset($credit[0]);



    echo 'Serial Numbers : '.print_r($serialno);
    echo '<br>A/C Names : '.print_r($acc_name);
    echo '<br>Debit Amount : '.print_r($debit);
    echo '<br>Credit Amount : '.print_r($credit);

    This gives me following result :
    ARRAY
    (
    [1] => 1
    [2] => 2
    )
    SERIAL NUMBERS : 1ARRAY
    (
    [1] => MAN SITE
    [2] => MAN SITE
    )

    A/C NAMES : 1ARRAY
    (
    [1] => 20
    [2] => 0
    )

    DEBIT AMOUNT : 1ARRAY
    (
    [1] => 1
    [2] => 5
    )

    CREDIT AMOUNT : 1


    for ($i=1;$i=$rowcount;$i++)
    {
    $amount = ($debit[$i]-$credit[$i]);
    $accname=$acc_name[$i];

    $insert2 = "INSERT INTO `khata2`.`docitems` 
    (
    `dateinput`,
    `docno`, 
    `itemno`, 
    `accountname`, 
    `amount`, 
    `picrefno`, 
    `updatestamp`)
    VALUES (
    NOW(''), 
    '$docno', 
    '$i', 
    '$accname', 
    '$amount', 
    '$docno', 
    Null)";      
    }
    if (!mysql_query($insert2)){
    echo '<br><a style="color:RED">Zero</a> items saved! Try Again..<br>';

    die('Error: ' . mysql_error());
    break;
    }
    echo '<br><a style="color:GREEN">'.$rowcount.' </a>record inserted.'; 
    exit();


    RESULTS AS :
    Fatal error:  Maximum execution time of 30 seconds exceeded in F:\server\htdocs\xampp\Khata2\processor\new_document.php on line 184 ( Line 184 is  '$amount',)
for ($i=1;$i<=$rowcount;$i++){
     //generate query
}
//do query
for ($i=1;$i<=$rowcount;$i++){
     //generate query
     //do query
}
INSERTY INTO table(field1,field2) VALUES(v11,v12),(v21,v22),(v31,v32);

$insert2=array();
for ($i=1;$i=$rowcount;$i++)
{
    $amount = ($debit[$i]-$credit[$i]);
    $accname=$acc_name[$i];

    $insert2[] = "(
    `dateinput`,
    `docno`, 
    `itemno`, 
    `accountname`, 
    `amount`, 
    `picrefno`, 
    `updatestamp`)
    VALUES (
    NOW(''), 
    '$docno', 
    '$i', 
    '$accname', 
    '$amount', 
    '$docno', 
    Null)";      
}
if (!mysql_query('INSERT INTO tblname VALUES'.implode(',',$insert2))){
    echo '<br><a style="color:RED">Zero</a> items saved! Try Again..<br>';

    die('Error: ' . mysql_error());
    break;
}