0

我希望这是有道理的,我已经使用这段代码几天了,目前感觉有点不实用!

我有一个庞大的表单,可以将大量信息传递到数据库中,表单的一个组成部分涉及文件上传。

我正在创建一个名为 uploads 的数组,并从我的数据库中传递列名,希望我可以使用它们来生成一个查询,该查询将自动将它收到的任何信息输入到相应的列中。

这是我的字段的代码示例:

<label>Upload copy front page of contract and relevant special condition(s)</label>
    <input type="file" name="upload[UploadCopyContr]" value="<?php echo $out['UploadCopyContr']?>" />

数组在接收端进行处理,文件上传到所需的文件夹没有任何问题,我遇到的问题是如何动态定位列字符串,以便生成查询字符串。

这将是我希望最终得到的查询:

UPDATE $table SET $column = $value WHERE

那么如何从我的数组中提取列名并将其放入变量中呢?如果我 var_dump ($_FILES["upload"]); 我得到以下回复

["name"]=> array(4) { ["UploadCopyExtr"]=> string(9) "test2.pdf" ["UploadCopyContr"]=> string(9) "test1.pdf" ["UploadCopyTaxDesigLttr"]=> string(0) "" ["UploadOthTaxDesigDoc"]=> string(0) ""

所以我知道数组中的值,我只是不知道如何定位它们!

我可以使用 $_FILES["uploads"]["UploadCopyExtr"] 但这对于动态生成的查询没有好处。

这是我的文件上传代码 - 运行良好。

$path = 'uploads/'; 
foreach ($_FILES["upload"]["error"] as $key => $error)
{                                                          
   $tmp_name = $_FILES["upload"]["tmp_name"][$key];
        {
           if (!$tmp_name) continue; 
        }    
   $name = $_FILES["upload"]["name"][$key];

if ($error == UPLOAD_ERR_OK)
{
    // Check if directory exists and create it if not.
    if(!is_dir($path . $_POST["AccountID"] ."/". $_POST["PropertyID"])) {
        mkdir($path . $_POST["AccountID"] ."/");
        mkdir($path . $_POST["AccountID"] ."/" . $_POST["PropertyID"] ."/");
    }
    if (move_uploaded_file($tmp_name, $path . $_POST["AccountID"] ."/". $_POST["PropertyID"] ."/".$name))

        $uploaded_array[] .= "Uploaded file '".$name."'.<br/>\n";

    else
        $errormsg .= "Could not move uploaded file '".$tmp_name."' to '".$name."'<br/>\n";

}
else $errormsg .= "Upload error. [".$error."] on file '".$name."'<br/>\n";
}

我没有包含我的查询示例,因为我对问题的这方面没有任何问题,我只想知道如何动态定位这些列名,如果这两个是内在链接的,请原谅我,我很乐意提供需要什么信息。

4

1 回答 1

1

使用 array_keys 获取数组的键。您还可以使用 implode 将键组合到查询的一部分中。基本上:

$columns = implode( ', ', array_keys( $array ) );
// This nets you 'ColumnName1, ColumnName2, Etc, Etc2'

价值观也是如此。然后将这些字符串插入到查询中。

但是,请确保您处理数据库向您抛出的任何错误以及您插入其中的屏幕值。

最终用户可以操作表单 HTML,并因此修改将插入查询的列名。

于 2013-05-15T17:15:46.907 回答