使用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));
}