0

这是我当前的 preg_match_all 输出

Array
(
[0] => Array
    (
        [0] => 2 Sentence text here
    )

)

Array
(
[0] => Array
    (
        [0] => 3 Sentence text here.
        [1] => 4 Sentence text here.
        [2] => 5 Sentence text here.
    )

)

我正在尝试将每个输出作为新行插入表中,但它认为每个 [0] [1] [2] 都是一个新列。如何将数组插入mysql?

$query = "INSERT INTO table (col1) VALUES ";
foreach ($matches as $item) {
$query .= "('".$item[0]."'),";
}
$query = rtrim($query,",");
$result = mysql_query($query);

上面显然只插入了数组的第一行

4

1 回答 1

1

好吧,你在另一个数组中有一个数组,所以......

$query = "INSERT INTO table (col1) VALUES ";

if(!empty($matches))
{
    foreach ($matches as $item) {
        foreach ($item[0] as $items) {
            $query .= "('".$items."'),";
        }
    }
}

if(!empty($matches))
{
    foreach ($matches[0] as $item) {
        $query .= "('".$item."'),";
    }
}

取决于您如何获得阵列匹配。


$query = rtrim($query,",");
$result = mysql_query($query);

这样你会得到这个查询:

INSERT INTO table (col1) VALUES ('2 Sentence text here'), ('3 Sentence text here'), ('4 Sentence text here'), ('5 Sentence text here')

这是使用单个 INSERT 语句在一个列中插入多个值的有效方法。

注意: 请不要在新代码中使用 mysql_* 函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

于 2013-06-20T19:20:59.043 回答