Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php将多个html表单数组插入mysqli_Php_Arrays_Mysqli - Fatal编程技术网

使用php将多个html表单数组插入mysqli

使用php将多个html表单数组插入mysqli,php,arrays,mysqli,Php,Arrays,Mysqli,我有一个HTML表单,它将多个数组传递到php中,然后插入到MySQL数据库中。在这方面,一切都很好,我可以用PHP检索数据。下面是.php中的数据: <?php $z=0; if(isset($_POST['newarr'])){ $z = $_POST['newarr']; } if($z == 0){ echo' <div id="d1">Add between 1 and 25 items<br/

我有一个HTML表单,它将多个数组传递到php中,然后插入到MySQL数据库中。在这方面,一切都很好,我可以用PHP检索数据。下面是.php中的
数据:

    <?php 
$z=0; 
if(isset($_POST['newarr'])){
$z = $_POST['newarr'];
}   
        if($z == 0){ 
        echo'
        <div id="d1">Add between 1 and 25 items<br/></div>
        <form method="post" action="">
        <input type=number name=newarr min=1 max=25 />
        <button type=submit value=submit>Submit</button>    
        </form>
        ';
        }     
                else {
                    echo '
                        <form action="test.php" method="post">
                        <table for=record>
                        <th for=ww>Item Number</th>
                        <th for=c>UPC</th>
                        <th>Name</th>
                        <th>Size</th>
                        <th>Qty</th>
                        <th>Category</th>
                        ';
                                for($i=1; $i<=$z; $i++){ 
                                    echo'   <tr>

                                        <td>'.$i.'</td>                                         
                                        <td><input type="text" name="upc[]" value="" size="20" placeholder="Enter UPC" /></td>
                                        <td><input type="text" name="name[]" value="" size="20" placeholder="Enter Name" /></td>

                                                    <td>
                                                    <select name="size[]">
                                                    <option value="">SELECT ONE</option>
                                                    <option value="6pp">6 pack/pouch</option>
                                                    <option value="8pp">8 pack/pouch</option>
                                                    <option value="10pp">10 pack/pouch</option>
                                                    <option value="12pp">12 pack/pouch</option>
                                                    <option value="24pp">24 pack/pouch</option>
                                                    <option value="325ml">325ml BTL</option>
                                                    <option value="750ml">750ml BTL</option>
                                                    <option value="1lt">1 Litter BTL</option>
                                                    <option value="1.75lt>1.75 Litter BTL</option>
                                                    <option value="1gal>1 Gallon BTL</option>
                                                    <option value="2gal>2 Gallon BTL</option>
                                                    <option value="5gal>5 Gallon BTL</option>   
                                                    </select>                   
                                                    </td>

                                        <td><input type="number" name="qty[]" value="" min="1" max="100" placeholder="Enter QTY" /></td>

                                                    <td>
                                                    <select name="type[]">
                                                    <option value="">SELECT ONE</option>
                                                    <option value="1">Mixers</option>
                                                    <option value="2">Rum</option>
                                                    <option value="3">Whisky</option>
                                                    <option value="4">Vodka</option>
                                                    <option value="5">Gin</option>
                                                    <option value="6">Tequila</option>
                                                    <option value="7">Beers</option>
                                                    <option value="8">Cognac</option>
                                                    <option value="9">Wine</option>
                                                    <option value="10">Champagne</option>
                                                    </select>                   
                                                    </td>                  
                                                   </tr>
                                                    ';
                                    }
                                        echo '</table>
                                            <div for=select>
                                            <input type="reset" value="clear" />
                                            <input type="submit" value="submit" />
                                            </div>
                                        </form>';
                }
        ?>
<?php 
include_once 'includes/admin_connect.php';


//$ins = "INSERT INTO products(UPC,product_name,product_size) VALUES";
$upc = mysqli_real_escape_string($mysqli, implode(',',$_POST['upc']));
$name = mysqli_real_escape_string($mysqli, implode(',',$_POST['name']));
$size = mysqli_real_escape_string($mysqli, implode(',',$_POST['size']));

$nArray = array(
'upc' => $upc, 
'name' => $name, 
'size' => $size,
); 

//var_dump($nArray);

foreach($nArray as $row => $vals) { 

    $newArr = implode(',',array_keys($nArray));


$ins1 = 'INSERT INTO products ('.$newArr.') VALUES ('.$vals.')';

}   

$query = mysqli_query($mysqli,$ins1) or die(mysqli_error($mysqli));

?>
这个特殊的代码给了我:

“字段列表”中的未知列“6pp”

我知道这意味着它将进入第一个select字段并将其作为表插入,但我不知道如何修复它。

尝试以下方法:

<?php 
include_once 'includes/admin_connect.php';

//a callback to use mysqli connection to escape strings
$mysqli_escape = function($str) use ($mysqli) {
   return mysqli_real_escape_string($mysqli, $str);
};

//escape values in arrays
$upc = array_map($mysqli_escape, $_POST['upc']);
$name = array_map($mysqli_escape, $_POST['name']);
$size = array_map($mysqli_escape, $_POST['size']);

for($i=0;$i<count($upc);$i++) { 
   $ins1 = 'INSERT INTO products (UPC,product_name,product_size) VALUES (\''.$upc[$i].'\', \''.$name[$i].'\', \''.$size[$i].'\')';
   $query = mysqli_query($mysqli,$ins1) or die(mysqli_error($mysqli));
}
?>


抛出错误:“字段列表”中的未知列“CocaCola”,这是我在第一行为product_name插入的值。是的,它起作用了,你引用这些值是什么意思(我知道你的做法不同,但不理解其背后的“语义”)。此外,在这种情况下,通过执行for循环,对于长db条目不是一个问题吗?您可以在同一查询中串联value(),以便在最后向数据库服务器发送一个查询。我所做的基本上是为查询中的字符串添加引号,一个不带引号的值
被视为一个列名,这就是为什么会得到这些值errors@user3701157如果这确实对您有所帮助,您可以投票/接受此答案