Javascript 在php中上载图像时出错

Javascript 在php中上载图像时出错,javascript,php,html,mysql,Javascript,Php,Html,Mysql,我在我的网站上有一个图片上传选项,当用户上传图片时,它会进入数据库,并显示在主页上。我已经完成了以下代码: 对于add.php 看起来您正试图将图像直接插入表中。根据我到目前为止的经验,它不是那样工作的 PHP中文件的基本上载是通过使用move\u upload\u file函数完成的。你可以得到更多的细节 当您通过file HTML元素在PHP中上传文件时,它将被上传到一个临时位置,并在$\u FILES数组中为您提供详细信息。您可以在$\u FILES数组中找到完整的文件信息,如文件名、

我在我的网站上有一个图片上传选项,当用户上传图片时,它会进入数据库,并显示在主页上。我已经完成了以下代码:

对于add.php



看起来您正试图将图像直接插入表中。根据我到目前为止的经验,它不是那样工作的

PHP中文件的基本上载是通过使用
move\u upload\u file
函数完成的。你可以得到更多的细节

当您通过file HTML元素在PHP中上传文件时,它将被上传到一个临时位置,并在
$\u FILES
数组中为您提供详细信息。您可以在
$\u FILES
数组中找到完整的文件信息,如文件名、大小、mime类型、临时名称和错误

因此,您应该先将文件上载到目标文件夹,然后再将其插入数据库。因此,您需要创建一个上载函数:

function uploadFile($file) {
    $destination = "[YOUR DESTINATION FOLDER PATH]";
    if ($file['errors'] == 0) {
        $fileNameSplit = explode('.', $file['name']);
        $newFileName = $fileNameSplit[0] . time() . $fileNameSplit[1];
        $uploadPath = $destination . DIRECTORY_SEPARATOR . $newFileName;

        if (move_uploaded_file($file['tmp_name'], $uploadPath)) {
            return $newFileName;
        }
    }

    return null;
}
您必须在插入查询之前调用此函数。因此,您的代码如下所示:

public function insert($table, $data){
    $uploadedFileName = uploadFile($_FILES['image']);
    if (!empty($uploadedFileName)) {
        $data['image'] = $uploadedFileName;
    }
    if(!empty($data) && is_array($data)){
        $columns = '';
        $values  = '';
        $i = 0;
        if(!array_key_exists('created',$data)){
            $data['created'] = date("Y-m-d H:i:s");
        }
        if(!array_key_exists('modified',$data)){
            $data['modified'] = date("Y-m-d H:i:s");
        }
        foreach($data as $key=>$val){
            $pre = ($i > 0)?', ':'';
            $columns .= $pre.$key;
            $values  .= $pre."'".$this->db->real_escape_string($val)."'";
            $i++;
        }
        $query = "INSERT INTO ".$table." (".$columns.") VALUES (".$values.")";
        $insert = $this->db->query($query);
        return $insert?$this->db->insert_id:false;
    }else{
        return false;
    }
}
试试这个。根据您的逻辑,代码中可能需要一些小的修改。我已将
$\u FILES['image']
作为参数传递,但您也可以在上载函数中直接使用
$\u FILES
数组,而无需向其传递任何内容

另外请注意,您也必须在编辑功能中使用相同的逻辑,但我想您可以这样做。如果没有,请告诉我


希望这有帮助。

看起来您正试图将图像直接插入表中。根据我到目前为止的经验,它不是那样工作的

PHP中文件的基本上载是通过使用
move\u upload\u file
函数完成的。你可以得到更多的细节

当您通过file HTML元素在PHP中上传文件时,它将被上传到一个临时位置,并在
$\u FILES
数组中为您提供详细信息。您可以在
$\u FILES
数组中找到完整的文件信息,如文件名、大小、mime类型、临时名称和错误

因此,您应该先将文件上载到目标文件夹,然后再将其插入数据库。因此,您需要创建一个上载函数:

function uploadFile($file) {
    $destination = "[YOUR DESTINATION FOLDER PATH]";
    if ($file['errors'] == 0) {
        $fileNameSplit = explode('.', $file['name']);
        $newFileName = $fileNameSplit[0] . time() . $fileNameSplit[1];
        $uploadPath = $destination . DIRECTORY_SEPARATOR . $newFileName;

        if (move_uploaded_file($file['tmp_name'], $uploadPath)) {
            return $newFileName;
        }
    }

    return null;
}
您必须在插入查询之前调用此函数。因此,您的代码如下所示:

public function insert($table, $data){
    $uploadedFileName = uploadFile($_FILES['image']);
    if (!empty($uploadedFileName)) {
        $data['image'] = $uploadedFileName;
    }
    if(!empty($data) && is_array($data)){
        $columns = '';
        $values  = '';
        $i = 0;
        if(!array_key_exists('created',$data)){
            $data['created'] = date("Y-m-d H:i:s");
        }
        if(!array_key_exists('modified',$data)){
            $data['modified'] = date("Y-m-d H:i:s");
        }
        foreach($data as $key=>$val){
            $pre = ($i > 0)?', ':'';
            $columns .= $pre.$key;
            $values  .= $pre."'".$this->db->real_escape_string($val)."'";
            $i++;
        }
        $query = "INSERT INTO ".$table." (".$columns.") VALUES (".$values.")";
        $insert = $this->db->query($query);
        return $insert?$this->db->insert_id:false;
    }else{
        return false;
    }
}
试试这个。根据您的逻辑,代码中可能需要一些小的修改。我已将
$\u FILES['image']
作为参数传递,但您也可以在上载函数中直接使用
$\u FILES
数组,而无需向其传递任何内容

另外请注意,您也必须在编辑功能中使用相同的逻辑,但我想您可以这样做。如果没有,请告诉我


希望这能有所帮助。

您能告诉我您在上述代码中尝试将文件上载到哪里吗?看起来您正在尝试将图像直接插入数据库。这样不行。让我写一个答案,你可以试试。@KishenNagaraju如果你告诉我
getRows()
方法看起来不安全,那将是一个很大的帮助。你能告诉我你在上面提到的代码中试图将文件上传到哪里吗?看起来像是你试图将图像直接插入数据库。这样不行。让我来写一个答案,你可以试试。@KishenNagaraju如果你告诉我
getRows()
方法看起来不安全,那将是一个很大的帮助。