【发布时间】:2016-04-05 11:53:44
【问题描述】:
我正在尝试将图像上传到我的服务器并将其名称和路径保存到我的数据库中。将文件上传到我的服务器有效,将数据保存在数据库中无效。
图像表
image_id int(11)
image_name varchar(64)
image_path varchar(64)
上传脚本
// Upload image to the server
$target_dir = "./path/to/image/folder/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
$uploadOk = 1;
} else {
echo "Die Datei ist keine Bilddatei.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Bitte nenne die Datei um, diese Datei existiert bereits.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Diese Datei ist größer als 5MB und kann daher nicht hochgeladen werden.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
echo "Ausschließlich JPG, JPEG, PNG & GIF Dateien können hochgeladen werden.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Ein Fehler ist aufgetreten. Die Datei konnte nicht hochgeladen werden.";
// if everything is ok, try to upload file
} else {
========================= DATABASE PART ========================
// create a database connection
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
// prepare and bind
$stmt = $conn->prepare("INSERT INTO images (image_id, image_name, image_path) VALUES (?, ?, ?)");
$stmt->bind_param("iss", $image_id, $image_name, $image_path);
// set parameters and execute
$image_id = '';
$image_name = $target_file;
$image_path = $target_dir;
$stmt->execute();
$stmt->close();
$conn->close();
==================================================================
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
header("Location:http://homepage.com");
} else {
echo "Während des Hochladens der Bilddatei ist ein Fehler aufgetreten. Bitte versuche es erneut.";
}
}
文件完全按照应有的方式上传。
数据库保持为空,没有错误消息。$image_name 和 $image_path 上的 var_dump 返回正确的值。
我错过了什么?
我会非常感谢任何形式的帮助。谢谢!
【问题讨论】:
-
没有错误处理连接、准备、绑定或执行。没有办法知道出了什么问题
-
看来你是在本末倒置,你应该得到通知。
-
更像
off the wagon -
“我认为可能有经验的眼睛可以立即发现我的错误。” - 不是吗?
标签: php mysql file-upload mysqli prepared-statement