1

我有以下数组:

$array[0] = "internet";
$array[1] = "renweb";

等等。

我想将该数组插入表中。我不知道该数组将有多少个位置,因为这是来自用户填写的表单的帖子。如何将它们插入到表中?

我在想一个foreach

就像是:

foreach($array as $tags){
    $query = sprintf("insert into solution_tags values('%s')", $tags);
    $DBconnect->query($query);
}

这是正确的方法吗?或者有没有更简单、有效、无痛的方法来做到这一点?

任何帮助都感激不尽!

4

4 回答 4

0

您可以将数组保存到文本文件,然后进行批量插入:

$file=.... /* your temp filename */
file_put_contents($file,implode("\n",$array));
$DBconnect->query("LOAD DATA INFILE '$file' INTO TABLE solution_tags");

...当然,前提是 Web 服务器和 DB 服务器共享相同的文件系统!

于 2013-10-27T19:52:35.670 回答
0

要回答您提出的问题:

只有在您感到疼痛时才寻找无痛方法。你?然后表达出来,让别人明白是什么让你感到不安,让他们为这个问题提供一定的解决方案。如果没有 - 就让它保持原样。效率也是如此。也很容易。无缘无故地改变你的代码,一时兴起,不知从何而来,可能会导致比你想象的当前代码更多的麻烦。

要回答你没有问的问题:

您的方法以及所有答案都存在一个基本缺陷:您的查询格式不正确。这可能会导致不可预知的后果。要正确格式化查询,您必须使用准备好的语句

$stm = $DBconnect->prepare("insert into solution_tags values(?)");
$stm->bind_param('s', $tag);

foreach($array as $tag){
    $stm->execute();
}

再次:这不是“效率”或“轻松”的问题(事实上,在或多或少复杂的查询中,与您当前的方法相比,这种方法将是一种痛苦),而是您应该采用的基本方法按照您的每一个查询。

附带说明一下,您可能希望在此表中添加一些字段,以将这些标签链接到其他一些实体。

于 2013-10-28T07:41:13.390 回答
-1

您可以使用一个查询执行许多插入操作:

$aValues = array();
foreach($array as $tags) {
    $aValues[] = sprintf('("%s")');
}

$query = 'INSERT INTO solution_tags VALUES '.implode(',', $aValues);
$DBconnect->query($query);

我使用implode它是因为它会为你处理逗号。

于 2013-10-27T20:32:26.187 回答
-1

最好的方法是像这样使用 foreach :

foreach( $myarray as $tags) {
mysql_query('insert into solution_tags values('$tags')');
}
于 2013-10-27T19:52:35.247 回答