如何使用数组在数据库中插入多行多列

时间:2020-05-27 作者:pandglobal

请告诉我,在php中使用数组是否可以使用一个sql查询插入到多个列和行中
$sql = "INSERT INTO MyGuests (firstname, lastname, email) <br> VALUES (\'John\', \'Doe\', \'[email protected]\');";
但我想将数组中的列名表示为数组,然后将值表示为数组值,在php中是这样的$sql = "INSERT INTO myguest (array(firstname => \'john\'));

2 个回复
最合适的回答,由SO网友:Mort 1305 整理而成

根据,这不是公认的SQL语法the MySQL manual. 你必须

INSERT INTO MyGuests
        (firstname, lastname,   email)
VALUES  (\'John\',    \'Doe\',      \'[email protected]\')
但是,这是一个远远超出您的问题范围的扩展,如果您有一个此信息的数组,您可以迭代整个过程来构建SQL字符串。

// The array of information
$guests = array(
    array(
        \'first_name\'    => \'John\',
        \'last_name\'     => \'Doe\',
        \'email\'         => \'[email protected]\',
    ),
    array(
        \'first_name\'    => \'Jane\',
        \'last_name\'     => \'Doe\',
        \'email\'         => \'[email protected]\',
    ),
);
// Build the SQL string
$sql = \'\';
foreach($guests as $g) {
    if($sql != \'\') $sql.= \',\';
    $sql .= \'("\'. $g[\'first_name\'] .\'", "\'. $g[\'last_name\'] .\'", "\'. $g[\'email\'] .\'")\';
}
if($sql != \'\') {
    $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ". $sql;
}
// $sql now is either empty or full of lots of records to insert.

SO网友:pandglobal

我使用上面的描述来找出一种更好、更简单的方法来实现这一点,而不使用数组,即使您可能想要使用数组,它看起来仍然是相同的方式。

下面是代码

$column = \'(firstname, lastname, email)\';  // here i can choose any column i wish
$value = "
    (\'John\', \'Doe\', \'[email protected]\'),
    (\'Jane\', \'Doke\', \'[email protected]\'),
    (\'John3\', \'Doe3\', \'[email protected]\'),
    (\'Jane4\', \'Doke4\', \'[email protected]\')
     ";


$sql = "INSERT INTO a_boy ". $column . " VALUES ". $value;  
这会将一个四行数据插入到名为a\\u boy的数据库表中,因此我只能继续将值扩展到希望插入的行数和详细信息数,这使得我的代码简单易用,因为目标是使用一个查询插入多个列和多个行。