如何为这个表做一个数组插入


How to make an array insert for this table

我需要你的帮助,我有这个表小提琴(真正的表有另外4个提供者列,总共6个),我需要一些数组插入到DB中,我一直在尝试这个:

    $rowb = array();
    $i = 1;
    while (isset($_POST["prov_name$i"])) {
        $rowb[] = array($_POST["prov_name$i"],$_POST["unitval$i"], $_POST["totval$i"]);
        $i++;
    }
    foreach ($rowb as $row) {
        $query = 'INSERT INTO provprices (CA_id, prov_name, unitval , totval)
                            VALUES ("'.$CA_id.'","'.$row[0].'","'.$row[1].'","'.$row[2].'")';
        mysql_query($query) or die(mysql_error());
    }

但是我认为,需要在$i旁边再增加一个字母,希望你能理解我。谢谢!

您的数据是二维的——对于每个prov_name$i,您有一系列的$unitval$i$jtotalval$i$j。所以你需要嵌套循环:

$i = 1;
while (isset($_POST["prov_name$i"])) {
    $prov_name = mysql_real_escape_string($_POST["prov_name$i"]);
    $j = 1;
    while (isset($_POST["unitval$i$j"])) {
        $unitval = intval($_POST["unitval$i$j"]);
        $totalval = intval($_POST["totalval$i$j"]);
        $query = "INSERT INTO provprices (CA_id, prov_name, unitval, totalval)
                  VALUES ('$CA_id', '$prov_name', $unitval, $totalval)";
        mysql_query($query) or die(mysql_error());
        $j++;
    }
    $i++;
}

这个方法使用Joomla 3版本的插入记录

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$columns = array(
    $db->quoteName('CA_id'),
    $db->quoteName('prov_name'),
    $db->quoteName('unitval'),
    $db->quoteName('totval')
    );
$rowb = array();
$i = 1;
if (isset($_POST["prov_name"])) {
    $rowb[] = $jinput->post->get("prov_name$i", '', 'string').",".$jinput->post->get("unitval$i", '', 'string').",".$jinput->post->get("totval$i", '', 'string');
    $i++;
}
foreach ($rowb as $row) {
    $values[] = $db->quote($CA_id).",".$db->quote($row[0]).",".$db->quote($row[1]).",".$db->quote($row[2]);
}
$query
        ->columns($columns)
        ->values(implode(',',$values))
        ->insert($db->quoteName('#__supersite_contact'));
$db->setQuery($query);
if (!$db->execute()) {
    throw new Exception($db->getErrorMsg());
}