将多个值插入数据库的最佳方法 - PHP MySQL

时间:2016-02-07 01:40:56

标签: php mysql arrays

问题解决了。 根据Zerquix18的回答,我做了一些小改动,它就像一个魅力。

$count = count($book_array);
$query = 'INSERT INTO book_exchange (class, book_title, isbn) VALUES ';
for ($i=0; $i<$count; $i++){
    $query .= '( \''.$book_array[$i][0].'\',\''.$book_array[$i][1].'\',\''.$book_array[$i][2].'\' )';
    if ($i != ($count-1)) {
        $query .= ','; 
    }
}

问题: enter image description here

我有一个书桌,让用户在下面的字段中输入信息。我想将值插入我的book表中。我使用“for”循环来获取每一行的值并将其添加到数组中。我将再次使用“for”将这些数组添加到数据库中。

例如,如果在字段中使用填充值。我有3个数组: book_array[0]book_array[1]book_array[2]。每个都包含3个元素。我要编写一个for循环来将3个数组插入表中。

另一方面,我认为我可以将所有具有相同类型的元素添加到数组中。例如,我有一个类的数组,一个用于书名的数组和一个用于isbn的数组。然后我将这些数组添加到数据库的每一列中。我认为这种方式更快。但我不确定它是否有效。在这种情况下,请建议我将数据插入数据库的最佳方法。还请举个例子。感谢。

for ($i=0; $i<$n; $i++) {
    $book_array[$i] = array($_POST['field_class_'.$i.''],$_POST['field_book_title_'.$i.''],$_POST['field_isbn_'.$i.'']);
}

3 个答案:

答案 0 :(得分:2)

在此示例中,我尝试进行查询以插入变量$book_array

的所有值
<?php
$q = 'INSERT INTO table (col1,col2,col3) VALUES ';
$count = count($book_array);
for($i = 0; $i < $count; $i++) {
    $q .= "( {$book_array[$i][0]}, {$book_array[1]}, {$book_array[2]} )";
    // add a comma if it's not the last
    if( $i !== ($count-1) )
        $q .= ',';
}
// now $q is your query.

我没有测试它。

答案 1 :(得分:0)

您可以使用此类型的语法来解决此问题:

INSERT INTO <table_name> ( Column1, Column2 ) VALUES ( Value1, Value2 ), ( Value3, Value4 )

答案 2 :(得分:0)

您可以像使用

一样使用查询
INSERT INTO TABLE_NAME (1, 2) VALUES (v1, v2),(v1, v2),(v1, v2),..............
1,2 are representing column index. 

在上面的查询中,我提到了列索引值(int)而不是column-label(String)。使用索引的好处是,如果您更改了任何列名,则无需更改查询。否则,如果您使用列标签,则还必须更改查询。