我有以下数组:
$array[0] = "internet";
$array[1] = "renweb";
等等。
我想将该数组插入表中。我不知道数组将有多少个位置,因为这是来自用户填写的表单的帖子。如何将它们插入表格?
我正在思考一个foreach
类似的东西:
foreach($array as $tags){
$query = sprintf("insert into solution_tags values('%s')", $tags);
$DBconnect->query($query);
}
这是正确的做法吗?或者有更简单,有效,无痛的方法吗?
非常感谢任何帮助!
答案 0 :(得分:0)
您可以将数组保存到文本文件中,然后执行批量插入:
$file=.... /* your temp filename */
file_put_contents($file,implode("\n",$array));
$DBconnect->query("LOAD DATA INFILE '$file' INTO TABLE solution_tags");
...当然,提供了Web服务器和数据库服务器共享相同的文件系统!
答案 1 :(得分:0)
回答你问的问题:
只有在感到疼痛时,才能寻找无痛的方法。你呢?然后表达它,让其他人明白什么让你感到不安,让他们为这个问题提供某些解决方案。如果没有 - 只需保持原样。效率完全相同。也很容易。在没有任何理由的情况下改变你的代码,只是突发奇想,无处不在,可能会导致比你想象的当前代码更麻烦。
回答你没有提出的问题:
您的方法以及所有答案都存在一个重要缺陷:您没有正确格式化查询。这可能会导致不可预测的后果。要正确格式化查询,必须使用预准备语句
$stm = $DBconnect->prepare("insert into solution_tags values(?)");
$stm->bind_param('s', $tag);
foreach($array as $tag){
$stm->execute();
}
再次:这不是“效率”或“缓和”的问题(事实上,在一个或多或少复杂的问题上,这种方法与现有方法相比将是一种痛苦),但是基本方法的问题你应该遵循你的每一个问题。
另外,您可能希望在此表中添加一些字段,以将这些标记链接到其他实体。
答案 2 :(得分:-1)
最好的方法是使用这样的foreach:
foreach( $myarray as $tags) {
mysql_query('insert into solution_tags values('$tags')');
}
答案 3 :(得分:-1)
您可以使用一个查询执行多次插入操作:
$aValues = array();
foreach($array as $tags) {
$aValues[] = sprintf('("%s")');
}
$query = 'INSERT INTO solution_tags VALUES '.implode(',', $aValues);
$DBconnect->query($query);
我使用了implode
,因为它会为你处理逗号。