PHP阵列插入到MySQL表的个别行。 [英] PHP Array insert into MySQL table as individual rows.

查看:148
本文介绍了PHP阵列插入到MySQL表的个别行。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用PHP在MySQL表中插入多发行。数据是在数组中,我试图采用了下述codeS,但它不工作。请帮我。

查询字符串是:

<$p$p><$c$c>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

  $行=爆炸(&安培;,$ _ SERVER ['QUERY_STRING']);
    $行数=((计数($行)-9)/ 3); //设置计算行收到,9是costant没有投入    $系列号=阵列();
    $ acc_name =阵列();
    $借记=阵列();
    $信贷=阵列();    $系列号[] = $ I;
    array_unshift($系列号,);
    未设置($系列号[0]);    $ acc_name [] =($ _GET ['accname'$ I]);
    array_unshift($ acc_name,);
    未设置($ acc_name [0]);    $借记[] =($ _GET ['DrAmount'$ I]);
    array_unshift($借记);
    未设置($借记[0]);    $信用[] =($ _GET ['CrAmount'$ I]);
    array_unshift($信贷,);
    未设置($信贷[0]);    回声序列号:.print_r($系列号);
    呼应'&LT; BR&gt;一种/ C名称:.print_r($ acc_name);
    呼应'&LT; BR&GT;借方金额:'.print_r($借方);
    呼应'&LT; BR&GT;信用证金额:'.print_r($功劳);    这给了我以下结果:
    ARRAY
    (
    [1] =&GT; 1
    [2] =&GT; 2
    )
    序列号:1ARRAY
    (
    [1] =&GT;人遗址
    [2] =&GT;人遗址
    )    A / C名称:1ARRAY
    (
    [1] =&GT; 20
    [2] =&GT; 0
    )    借方发生额:1ARRAY
    (
    [1] =&GT; 1
    [2] =&GT;五
    )    信用额度:1
    为($ i = 1; $ I = $行数; $ I ++)
    {
    $金额=($借记[$ i] - $信用[$ i]);
    $ accname = $ acc_name [$ i];    $ insert2 =INSERT INTO`khata2`.`docitems`
    (
    `dateinput`,
    `docno`,
    `itemno`,
    `accountname`,
    `amount`,
    `picrefno`,
    `updatestamp`)
    VALUES(
    现在(''),
    '$ docno',
    '$ I',
    '$ accname',
    $量',
    '$ docno',
    空值);
    }
    如果(!的mysql_query(insert2 $)){
    呼应'&LT; BR&GT;&LT;风格=颜色:红色&GT;零&LT; / A&GT;项目得救了!再试...&LT; BR&GT;';    死('错误:mysql_error());
    打破;
    }
    呼应'&LT; BR&GT;&LT;风格=颜色:绿色&GT;'。$行数。 &LT; / A&GT;记录插入。
    出口();
    结果:
    致命错误:在F中突破30秒最大执行时间:\\服务器\\ htdocs中\\ XAMPP \\ Khata2 \\线184处理器\\ new_document.php(184线为$量',)


解决方案

1)你做的:

 为($ i = 1; $ I&LT; = $行数; $ I ++){
     //生成查询
}
//做查询

但yoou需要:

 为($ i = 1; $ I&LT; = $行数; $ I ++){
     //生成查询
     //做查询
}

2)也许有些快将做1比查询查询1的每一行:结果
您可以使用下面的语法:

  INSERTY INTO表(字段1,场2)VALUES(V11,V12),(V21,V22),(V31,V32);$ insert2 =阵列();
为($ i = 1; $ I = $行数; $ I ++)
{
    $金额=($借记[$ i] - $信用[$ i]);
    $ accname = $ acc_name [$ i];    $ insert2 [] =(
    `dateinput`,
    `docno`,
    `itemno`,
    `accountname`,
    `amount`,
    `picrefno`,
    `updatestamp`)
    VALUES(
    现在(''),
    '$ docno',
    '$ I',
    '$ accname',
    $量',
    '$ docno',
    空值);
}
如果(!的mysql_query(INSERT INTO tblname VALUES'.implode('',$ insert2))){
    呼应'&LT; BR&GT;&LT;风格=颜色:红色&GT;零&LT; / A&GT;项目得救了!再试...&LT; BR&GT;';    死('错误:mysql_error());
    打破;
}

3)或PDO与mysqli的prepared语句是伟大的;)

I want to insert mutiple rows in mysql table using php. Data is in arrays and I am trying to employ following codes but its not working. Please help me.

Query String is:

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("&", $_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',)

解决方案

1) You do:

for ($i=1;$i<=$rowcount;$i++){
     //generate query
}
//do query

but yoou need:

for ($i=1;$i<=$rowcount;$i++){
     //generate query
     //do query
}

2) Maybe some faster will be to do 1 query than 1 query for every row:
You can use following syntax:

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;
}

3) PDO or mysqli with prepared statements is great;)

这篇关于PHP阵列插入到MySQL表的个别行。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆