尝试将图片(使用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();
}
}
任何想法或暗示告诉我我做错了什么。我愿意接受任何建议。
答案 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();
}
}