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')

これは、1 つの INSERT ステートメントで 1 つの列に複数の値を挿入する有効な方法です。

注: 新しいコードでは mysql_* 関数を使用しないでください。それらはもはや保守されておらず、公式に非推奨です赤いボックスが見えますか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを使用するかを決めるのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2013-06-20T19:20:59.043 に答える