1

4 つのテキスト フィールドと複数のファイル アップロード (5 つのファイル/フィールド) を含むフォームがあります。

データベース テーブルには 9 つのフィールドがあり、そのうちの 4 つはテキスト フィールド用で、残りの 5 つはフォームによってアップロードされる画像への URL パスを保持する必要があります。 /p>

通常、フォームデータを収集し、挿入または更新する必要がある MySQL クエリを実行しますが、foreachループ結果をプログレッシブ/動的変数名に割り当てる方法がわからないため、反復後に 1 つの MySQL クエリ/挿入のみを実行します。 .

$inum=0;

foreach ($_FILES["prodi"]["error"] as $key => $error)
{
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["prodi"]["tmp_name"][$key];
        $name = $_FILES["prodi"]["name"][$key];
        $type = $_FILES["prodi"] ["type"] [$key];
        if ($type=="image/jpg" OR $type=="image/jpeg" OR $type=="image/pjpeg" OR $type=="image/png")
        {move_uploaded_file($tmp_name, "../zzz/zzz-images/$name");
        $ipath=$domain."/zzz/zzz-images/".$name;
        $inum++;
        $i="image".$inum; // STUCK AT THIS POINT //}
}

したがって、ループ内でエコーする$iと、次のようになります。$ipath

image1 (The table field storing the url)  /  *ttp://www.whaterver......(the url stored)

image2 (The table field storing the url)  /  *ttp://www.whaterver......(the url stored)

配列内に処理するファイルがなくなるまでこれを繰り返しますが、mysqli クエリが次のように機能するように、各ループ結果を新しい変数に設定するにはどうすればよいですか。

mysqli_query($con,"INSERT INTO `table1` (`field1`,`field2`,`field3`,`field4`,`image1`,`image2`,`image3`,`image4`,`image5`) VALUES ('field1',field2','field3','field4','loop_result1','loop_result2','loop_result3' etc. etc. etc.);")
4

2 に答える 2

1

PHP では、変数を使用して変数名を作成できます。行き詰まった場所では、次のことを行う必要があります。

$varname  = "image".$inum; // "image1" for example
$$varname = $ipath; // this magic puts the value of $ipath into the variable $image1, $image2, etc

これが機能する例を次に示します: https://eval.in/83538

于 2013-12-27T20:30:50.643 に答える
0

これを試して:

$inum++;
${'image' . $inum} = $ipath; // STUCK AT THIS POINT //}
}

参照: PHP の動的変数名

于 2013-12-27T20:31:44.037 に答える