我有一个小表单来添加类别。我的表格字段如下:
名称 必需
说明 不需要
照片 不需要
它将创建一个包含所有信息的类别,它甚至会将图像名称插入数据库中。
我遇到的问题是它不会将图像移动到uploads文件夹。 此外,它将重命名图像,如下所示:如果图像名称是 avatar.jpg ,它将在数据库字段中将其重命名为 85789avatar.jpg 。
我需要它重命名图像,如下所示 O1CCJDSXBOM2.jpg 。
,最后一个问题是图像不是必需的,如果你把它留空,它仍然会在数据库字段中放入89439个数字。
if (isset($_POST['submit'])) {
$Name = $_POST['name'];
$Description = $_POST['description'];
if (empty($Name)) {
$errors[] = "Name Required.";
}
if (!empty($errors)) {
echo validation_errors($errors[0]);
} else {
$file = rand(1000, 100000). $_FILES['photo']['name'];
$file_loc = $_FILES['photo']['tmp_name'];
$file_size = $_FILES['photo']['size'];
$folder = "uploads/";
if (($file_size > 2097152)) {
echo validation_errors("Your avatar exceeds file size");
} else {
move_uploaded_file($file_loc, $folder, $file);
$db = dbconnect();
$stmt = $db->prepare("INSERT INTO discussion_categories(Name, Description, Photo) VALUES (?,?,?)");
$stmt->bind_param('sss', $Name, $Description, $file);
$stmt->execute();
$stmt->close();
header("Location: managecategories.php");
答案 0 :(得分:1)
它不会将图像移动到uploads文件夹,也会按如下方式重命名图像。如果图像名称是avatar.jpg,则会在数据库字段中将其重命名为85789avatar.jpg
move_uploaded_file()有两个参数,而不是三个。更新此行:
move_uploaded_file($file_loc, $folder, $file);
对此(将文件名附加到文件夹):
move_uploaded_file($file_loc, $folder . $file);
最后一个问题是图片不是必需的,如果你把它留空,它仍然会在数据库字段中放入89439个数字。
由于move_uploaded_file()返回boolean,因此代码可以更新为仅在文件成功上传时插入记录。
if (move_uploaded_file($file_loc, $folder . $file)) {
$db = dbconnect();
$stmt = $db->prepare("INSERT INTO discussion_categories(Name, Description, Photo) VALUES (?,?,?)");
$stmt->bind_param('sss', $Name, $Description, $file);
$stmt->execute();
$stmt->close();
}