PHP数组作为单独的行插入MySQL表。
我想使用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&
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;
}