Php 用户将图像上传到网站,然后显示在gallary中

Php 用户将图像上传到网站,然后显示在gallary中,php,mysql,image,upload,gallery,Php,Mysql,Image,Upload,Gallery,因此,我有一个管理面板建成,我希望能够上传图像,改变图像文件的名称为一个数字ID,这是由多少行已经在数据库中生成。然后把它们陈列在画廊里供参观者参观。我已经在互联网上浏览了几天,尝试了不同的脚本,混合和匹配,但似乎没有任何效果。这是PHP btw。我相信问题在于move_uploaded_file()函数。如果有人能想出更好的方法或在我的代码中发现错误,那就太棒了。该网站是为一个客户,所以它将更加感谢及时回复。谢谢各位 require_once("../php/connect.php"); f

因此,我有一个管理面板建成,我希望能够上传图像,改变图像文件的名称为一个数字ID,这是由多少行已经在数据库中生成。然后把它们陈列在画廊里供参观者参观。我已经在互联网上浏览了几天,尝试了不同的脚本,混合和匹配,但似乎没有任何效果。这是PHP btw。我相信问题在于move_uploaded_file()函数。如果有人能想出更好的方法或在我的代码中发现错误,那就太棒了。该网站是为一个客户,所以它将更加感谢及时回复。谢谢各位

require_once("../php/connect.php");

function GetImageExtension($imagetype){
    if(empty($imagetype)) return false;
    switch($imagetype){
        case 'image/png': return '.png';
        default: return false;
    }
}

if (!empty($_FILES['fileToUpload']['name'])){
    $file_name = $_FILES['fileToUpload']['name'];
    $temp_name = $_FILES['fileToUpload']['tmp_name'];
    $imgtype = $_FILES['fileToUpload']['type'];
    $ext = GetImageExtension($imgtype);

    $query1 = "SELECT COUNT(*) FROM gal";
    $count = mysqli_query($dbc, $query1);

    $imagename = $count + 0;
    $newfilename = "$imagename" . ".png";

    //Debug
    echo "hello <br>";
    echo "$newfilename";
    //End Debug

    $folder = "/uploads/";
    if(move_uploaded_file($_FILES['image']['tmp_name'], "$folder" . $_FILES['image']['$newfilename'])){
        $query2 = "INSERT INTO `nocas_19164639_admin`.`gal` (`id`, `name`, `active`) VALUES (NULL, '$newfilename', '1')";
        mysqli_query($dbc, $query2);
    }else{
        exit("Error while uploading file...");
    }
}
require_once(“../php/connect.php”);
函数GetImageExtension($imagetype){
if(空($imagetype))返回false;
开关($imagetype){
案例“image/png”:返回“.png”;
默认:返回false;
}
}
如果(!空($_文件['fileToUpload']['name'])){
$file_name=$_FILES['fileToUpload']['name'];
$temp_name=$_文件['fileToUpload']['tmp_name'];
$imgtype=$\u文件['fileToUpload']['type'];
$ext=GetImageExtension($imgtype);
$query1=“从gal中选择计数(*)”;
$count=mysqli_查询($dbc,$query1);
$imagename=$count+0;
$newfilename=“$imagename”。.png”;
//调试
回音“你好
”; 回显“$newfilename”; //结束调试 $folder=“/uploads/”; 如果(移动上传的文件($\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\{ $query2=“插入'nocas_19164639_admin`.`gal`(`id`、`name`、`active`)值(NULL、$newfilename、`1')”; mysqli_查询($dbc,$query2); }否则{ 退出(“上传文件时出错…”); } }
我可以问一下为什么要将文件重命名为与其所在行相关的数字吗? 你使一项简单的任务变得非常复杂。 您不应该将图像存储在数据库中,您应该将它们上载到站点内的目录中,并将相应的名称存储在数据库中

我不明白把名字改成数字的全部原因,只是把一切搞得一团糟

你应该这样做

在配置文件中创建目录路径

defined("UPLOAD_DIRECTORY") ? null : define("UPLOAD_DIRECTORY", __DIR__ . DS . "uploads");
我为mysqli查询创建了一个函数,这样我就不必一直键入它

function query($sql) {

global $connection;

return mysqli_query($connection, $sql);
}
然后我有一个确认查询,检查查询中是否有错误

function confirm($result) {

global $connection;

if(!$result) {

    die("QUERY FAILED" . mysqli_error($connection));
}
}
然后您可以简单地执行类似这样的操作来插入到db中

$product_image = escape_string($_FILES['file']['name']);
    $image_temp_location = $_FILES['file']['tmp_name'];

    move_uploaded_file($image_temp_location, UPLOAD_DIRECTORY . DS . $product_image);

    $query = query("INSERT INTO products(product_image) VALUES( '{$product_image}')");

这就是我试图做的。这个数字就是这个名字,并以和名字相同的id发送到数据库。我不明白把名字改成数字的全部原因,只是把一切搞得一团糟。你应该这样做。嗯,没错,因为我有一个id,我可以在显示它时引用它。也许我只是想得太多了。我用一种简单的方式添加了图片,更新了我的答案。谢谢,我试试看