For Each循环在php中执行两个数组值

时间:2015-03-18 14:12:33

标签: php mysql arrays

需要将两个数组值传递给MySQL数据库以插入数组值。 我从表单中发布数组值:

<input type='checkbox' name=ticket[] value=".$TicketNo.">
<input type='hidden' name=cpt[] value=".$cpt.">

并通过以下方式将表单值传递到数据库中:

 foreach($_POST['ticket'] as $ticket && $_POST['cpt'] as $cpt )
 {

 // save the data to the database
 mysql_query("INSERT  arlog SET assdate='$assdate',TicketNo='$ticket',assign='$assign',status='New',quality_status='New',provider='$provider',cpt='$cpt'")
 or die(mysql_error());

 }

我知道mysql_query没有被广泛使用,但作为一个新手,我正在使用它。所以只需忽略该语句并指导我使用每个循环传递两个数组值。通过只传递票号它工作正常,但我也想通过cpt。

2 个答案:

答案 0 :(得分:0)

我将忽略mysql_*,因为您需要移动到MySQLi或PDO,如您所知。但请使用$_POST['ticket']中的密钥访问$_POST['cpt']

foreach($_POST['ticket'] as $key => $ticket)
{
    $cpt = $_POST['cpt'][$key];
}

最好指定数组键,特别是如果未选中则不会提交复选框:

<input type='checkbox' name=ticket[0] value=".$TicketNo.">
<input type='hidden' name=cpt[0] value=".$cpt.">

<input type='checkbox' name=ticket[1] value=".$TicketNo.">
<input type='hidden' name=cpt[1] value=".$cpt.">

答案 1 :(得分:0)

您可以像这样设置数组:

<input type='checkbox' name=ticket[][number] value=".$TicketNo.">
<input type='hidden' name=ticket[][cpt] value=".$cpt.">

并将一个sql查询与每个两个字段名称连接起来,例如single:

$inserts = array();
foreach ($_POST['ticket'] as $ticket) {
    $inserts[] = "'{$ticket['number']}', '{$ticket['cpt']}'";
}
$sql = 'INSERT INTO tbl (TicketNo, cpt) VALUES (' . join('),(', $inserts) . ');';