foreach 循环结果分配给进度变量

foreach loop result assign to progressing variable

提问人:DMSJax 提问时间:12/28/2013 最后编辑:Giacomo1968DMSJax 更新时间:12/28/2013 访问量:206

问:

我有一个包含 4 个文本字段和多个文件上传(5 个文件/字段)的表单:

数据库表有 9 个字段,其中 4 个用于文本字段,其余 5 个应包含表单上传的图像的 URL 路径,对于数据库中的 5 个 URL 字段,它们被简单地命名为 image1、image2、image3...

通常我们收集表单数据并执行我们需要插入或更新的任何MySQL查询,但是我无法弄清楚如何将循环结果分配给渐进式/动态变量名称,以便在迭代后我只执行1个MySQL查询/插入。foreach

$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.);")
php foreach mysqli 变量

评论

0赞 Giacomo1968 12/28/2013
你被困在做什么?即使有你的详细解释也不清楚。
0赞 DMSJax 12/28/2013
@JakeGould文件上传部分是遍历存储在服务器上的每个临时文件并将它们移动到正确的目录,我需要存储在相应变量($path 1、$path 2 等)中的每个文件>的完整路径(1、2 等)用于 MySQLI 查询。因此,如果:变量 $a = 路径/file_name 从循环的第一次迭代开始,我如何/在哪里告诉它下一个路径/file_name结果需要分配给变量$b而不是写$a......希望能更好地解释它

答:

1赞 Digital Chris 12/28/2013 #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

评论

0赞 DMSJax 12/28/2013
谢谢,我以为变量变量是答案的一部分,但我以前没有使用过它,也不确定我是否理解它。但我现在确实明白了,而且奏效了。谢谢!
0赞 Giacomo1968 12/28/2013
是的,这样的事情似乎是一个错误,但它们在这样的场景中效果很好。$$varname
0赞 Jérôme Teisseire 12/28/2013 #2

试试这个:

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

请参阅:PHP 中的动态变量名称