Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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将数组中的值插入MySQL_Php_Mysql - Fatal编程技术网

使用PHP将数组中的值插入MySQL

使用PHP将数组中的值插入MySQL,php,mysql,Php,Mysql,假设我有一个数组,如下所示: $array = array('first_value', 'second_value', 'thrid_value', 'and so on'); 还有一列,我想在其中插入这些值,但每个值都在一个单独的行中 有可能吗 显然,对于这个问题,有一些答案是通过数组元素进行循环,并对每个循环执行insert语句,但这似乎是不明智的 或者考虑到我有一个ID列,这会有很大帮助(但我没有) 要引入的数据量不是非常

假设我有一个数组,如下所示:

$array = array('first_value', 
               'second_value', 
               'thrid_value', 'and so on');
还有一列,我想在其中插入这些值,但每个值都在一个单独的行中

有可能吗

显然,对于这个问题,有一些答案是通过数组元素进行循环,并对每个循环执行insert语句,但这似乎是不明智的

或者考虑到我有一个ID列,这会有很大帮助(但我没有)

要引入的数据量不是非常大,因此循环是完全可行的,我只是想确保没有更简单的方法来实现这一点,我可能不知道

// connect to database and store the resource in $connection
$array = array('first_value', 
               'second_value', 
               'thrid_value', 'and so on');

foreach($array as $value)
{
 $value=mysqli_real_escape_string($connection,$value);
 mysqli_query($connection,"INSERT INTO yourTABLE(columnName) VALUES('$value')");
}


您可以将它们全部放入一个包含多个
值的
INSERT
语句中

$values = implode(',', array_map(function($v) use ($mysqli) {
    return "'" . $mysqli->real_escape_string($v) . "'"; },
  $array));
$query = "INSERT INTO yourTable (Column) VALUES $values";
$mysqli->execute($query) or die ($mysqli->error);
从中,您可以尝试以下操作:


在表(列名称)中插入值(值a)、(值b)、(值c)

您可以使用准备好的语句;第一个查询将发送SQL语句,后续调用将只发送数据,从而减少负载:

$stmt = $db->prepare('INSERT INTO mytable (colname) VALUES (?)');

foreach ($array as $value) {
    $stmt->execute(array($value));
}

如果您正在使用,例如上面的示例,请确保禁用预处理语句模拟。

我肯定会说循环是最简单的方法。MySQL支持使用INSERT INTO。。。价值观(…)其中每个(…)都是一组值,由“,”分隔。这是一个新的集合。你可以把它变成一个,在(“$value”)后面加上一个“,”,在它前面加上“,”是的,这就是我要做的。没有其他办法:(@nrathaus是的,只是不想把他们弄糊涂,我相信很多这样的答案很快也会出现。如果你有成百上千的值,这是没有效率的。L,为什么我没有否决你的错误答案,你却对我生气,否决我的正确答案?我也很好地修复了你的语法错误:)你的否决票不是我投的,但我的是你投的,这很有趣。哈哈
,一列
只意味着一列是的,他说一列,你对所有三列都这样做不会像那哥们儿那样工作,所有的值都必须放在一列中。那么有什么问题吗?迭代数组并插入值。或者在一个查询中,脚本更新。它将比不插入n个插件更有效!
$values = implode(',', array_map(function($v) use ($mysqli) {
    return "'" . $mysqli->real_escape_string($v) . "'"; },
  $array));
$query = "INSERT INTO yourTable (Column) VALUES $values";
$mysqli->execute($query) or die ($mysqli->error);
$stmt = $db->prepare('INSERT INTO mytable (colname) VALUES (?)');

foreach ($array as $value) {
    $stmt->execute(array($value));
}