Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何以数组中传递的列名为目标来构造DB查询_Php_Mysql_Arrays - Fatal编程技术网

Php 如何以数组中传递的列名为目标来构造DB查询

Php 如何以数组中传递的列名为目标来构造DB查询,php,mysql,arrays,Php,Mysql,Arrays,我希望这有点道理,我已经使用这段代码好几天了,现在感觉有点沮丧 我有一个庞大的表单,它将大量信息传递到数据库中,表单的一个组成部分涉及文件上传 我正在创建一个名为uploads的数组,并从数据库中传递列名,希望可以使用它们生成一个查询,自动将收到的任何信息输入到相应的列中 下面是我的字段的代码示例: <label>Upload copy front page of contract and relevant special condition(s)</label>

我希望这有点道理,我已经使用这段代码好几天了,现在感觉有点沮丧

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

我正在创建一个名为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']?>" />
那么,如何从数组中提取列名并将其放入变量中呢?如果我使用var_dump($_文件[“上载]);我得到以下回应

["name"]=> array(4) { ["UploadCopyExtr"]=> string(9) "test2.pdf" ["UploadCopyContr"]=> string(9) "test1.pdf" ["UploadCopyTaxDesigLttr"]=> string(0) "" ["UploadOthTaxDesigDoc"]=> string(0) ""
所以我知道数组中有值,我只是不知道如何定位它们

我可以使用$_文件[“uploads”][“uploadCopyExtra”],但这对动态生成的查询没有好处

这是我的文件上传代码-这是完美的工作

$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";
}
$path='uploads/';
foreach($_文件[“上载”][“错误”]为$key=>$error)
{                                                          
$tmp_name=$_文件[“上载”][“tmp_名称”][$key];
{
如果(!$tmp_name)继续;
}    
$name=$_文件[“上载”][“名称”][$key];
如果($error==UPLOAD\u ERR\u OK)
{
//检查目录是否存在,如果不存在,则创建它。
如果(!is_dir($path.$\u POST[“AccountID”]。“/”$\u POST[“PropertyID”])){
mkdir($path.$\u POST[“AccountID”]。“/”);
mkdir($path.$\u POST[“AccountID”]。“/”$\u POST[“PropertyID”]。“/”);
}
如果(移动上传的文件($tmp\u name,$path.$\u POST[“AccountID”]。“/”$\u POST[“PropertyID”]。“/”$name))
$uploaded_array[]。=“上传的文件”.$name.“。
\n”; 其他的 $errormsg.=“无法将上载的文件”'.$tmp_name.“'移动到”'.$name.“'
\n”; } else$errormsg.=“上传错误。[.$error.]在文件“.$name.”“
\n”上; }

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

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

$columns = implode( ', ', array_keys( $array ) );
// This nets you 'ColumnName1, ColumnName2, Etc, Etc2'
值也是一样的。然后将这些字符串插入查询中

但是,请确保您能够处理DB向您抛出的任何错误以及插入其中的屏幕值


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

您能提供一个实际的示例来说明您想要实现的目标吗?现在还不太清楚动态定位列名的
是什么意思。我感兴趣的是如何清理来自客户端的列名。。。。忘了添加,编程懒散会带来evil@itachi我不确定是否需要清理客户端的列名,我正在使用PDO,因此如果传递的任何列名在数据库中不存在,它只会停止查询,最糟糕的情况可能是部分插入。如果我错了,请告诉我,即使在PDO中,您也不能参数化Clunn名称。因此,您将对任何SQL注入敞开大门。
$columns = implode( ', ', array_keys( $array ) );
// This nets you 'ColumnName1, ColumnName2, Etc, Etc2'