为什么我无法将图像上传到数据库?

时间:2016-04-14 21:05:06

标签: php mysql

尝试将图片(使用PHP)上传到数据库(phpMyAdmin)时遇到了大麻烦。即使调试(使用eclipse),一切似乎都很好。 当我运行我的代码时,上传图像,启动SQL查询并从tmp文件夹移动图像。但我的数据库中没有任何东这是代码:

if (isset($_FILES['upload']) && $_FILES['upload']['size'] > 0) {
    $file = $_FILES['upload']['tmp_name'];
    $name = $_FILES['upload']['name'];
    $type = $_FILES['upload']['type'];
    $size = $_FILES['upload']['size'];

    if (is_uploaded_file($file)) {
        $data = file_get_contents($file);
        $img->uploadImg($size, $type, $name, $data);
    }
    $older = getcwd () . '/image/'. basename($name);
    move_uploaded_file($_FILES['upload']['tmp_name'], $folder);
}

  public function uploadImg($size, $mimetype, $filename, $code) {
            try {
                $sql = "INSERT INTO img_table(fileName, size, mimetype, code) VALUES ($filename, $size, $mimetype, $code)";
                $this->db->exec($sql);
            }
            catch (PDOException $e) {
                echo $sql.' '.$e->getMessage();
            }
}

任何想法或暗示告诉我我做错了什么。我愿意接受任何建议。

1 个答案:

答案 0 :(得分:0)

问题是您没有在查询中引用字符串值。而且由于图像是二进制的,你还需要逃避它。

但避免所有这些问题的方法是使用准备好的声明。

public function uploadImg($size, $mimetype, $filename, $code) {
    try {
        $sql = "INSERT INTO img_table(fileName, size, mimetype, code) VALUES (:filename, :size, :mimetype, :code)"
        $stmt = $this->db->prepare($sql);
        $stmt->execute(array(
            ':filename' => $filename,
            ':size' => $size,
            ':mimetype' => $mimetype,
            ':code' => $code);
    } catch (PDOException $e) {
        echo $sql.' '.$e->getMessage();
    }
}