【问题标题】:How to save uploaded image names in MySQL database如何将上传的图像名称保存在 MySQL 数据库中
【发布时间】:2015-05-17 21:40:21
【问题描述】:

部分回复question

我有下面的 php 代码,它将一张裁剪的图像上传到 3 个不同的宽度和高度

  1. 头像目录,宽高200*200
  2. avatar1目录,宽高500*500
  3. avatar2目录,宽高700*700

并用 MD5 随机重命名图像。

<?php 
    function uploadImageFile() { // Note: GD library is required for this function

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $iJpgQuality = 100;

        if ($_FILES) {
            // if no errors and size less than 250kb
            if (! $_FILES['image_file']['error'] && $_FILES['image_file']['size'] < 250 * 1024) {
                if (is_uploaded_file($_FILES['image_file']['tmp_name'])) {
                    if (!is_dir('avatar')) {
                        mkdir('avatar');
                    }
                    // new unique filename
                    $sTempFileName = 'avatar/' . md5(time().rand());
                    // move uploaded file into cache folder
                    move_uploaded_file($_FILES['image_file']['tmp_name'], $sTempFileName);

                    // change file permission to 644
                    @chmod($sTempFileName, 0644);

                    $sResultFileName = copyImageFile('avatar', $sTempFileName, 200, 200, $iJpgQuality);
                    if ($sResultFileName) {
                        copyImageFile('avatar1', $sTempFileName, 500, 500);
                        copyImageFile('avatar2', $sTempFileName, 700, 700);
                        @unlink($sTempFileName);

                        return $sResultFileName;
                    }
                }
            }
        }
    }
    return false;
}

function copyImageFile($dirName, $originImageName, $iWidth, $iHeight, $iJpgQuality = 90) {
    if (file_exists($originImageName) && filesize($originImageName) > 0) {        
        $aSize = getimagesize($originImageName); // try to obtain image info
        if (!$aSize) {
            @unlink($originImageName);
            return;
        }

        // check for image type
        switch($aSize[2]) {
            case IMAGETYPE_JPEG:
                $sExt = '.jpg';
                $vImg = @imagecreatefromjpeg($originImageName);
                break;
            /*case IMAGETYPE_GIF:
                $sExt = '.gif';

                // create a new image from file 
                $vImg = @imagecreatefromgif($sTempFileName);
                break;*/
            case IMAGETYPE_PNG:
                $sExt = '.png';
                $vImg = @imagecreatefrompng($originImageName);
                break;
            default:
                @unlink($originImageName);
                return;
        }

        // create a new true color image
        $vDstImg = @imagecreatetruecolor( $iWidth, $iHeight );

        // copy and resize part of an image with resampling
        imagecopyresampled($vDstImg, $vImg, 0, 0, (int)$_POST['x1'], (int)$_POST['y1'], $iWidth, $iHeight, (int)$_POST['w'], (int)$_POST['h']);

        // define a result image filename        
        if (!is_dir($dirName)) {
            mkdir($dirName);
        }
        $newImageName = $dirName . DIRECTORY_SEPARATOR . md5(time().rand()) . $sExt;

        // output image to file
        imagejpeg($vDstImg, $newImageName, $iJpgQuality);
        //@unlink($sTempFileName);

        return $newImageName;
    }

    return false;
}

$sImage = uploadImageFile();
echo '<img src="'.$sImage.'" />';
?>

我的问题

我想把最近上传的3张图片的URL保存在ara MySQLdatabase中

  1. Avatar column=上传到头像目录的图片地址
  2. Avatar1 column= 上传到avatar1目录的图片地址
  3. Avatar2 column=上传到avatar2目录的图片地址

数据库名称:ara

数据库用户:root

数据库密码:

数据库地址:127.0.0.1

表名称:配置文件

列名:头像、头像1和头像2

【问题讨论】:

标签: php html mysql image


【解决方案1】:
copyImageFile('avatar1', $sTempFileName, 500, 500);
copyImageFile('avatar2', $sTempFileName, 700, 700);

之后替换这段代码

     include('connect/mysql.php');
    $avatar1=copyImageFile('avatar1', $sTempFileName, 500, 500);
    $avatar2=copyImageFile('avatar2', $sTempFileName, 700, 700);
$user_name = mysqli_real_escape_string($con, $_SESSION['UserName']);

       mysqli_query($con,"UPDATE profiles SET AvatarImage='".$sResultFileName."',AvatarImageBig='".$avatar1."',AvatarImageSmall='".$avatar2."' WHERE UserName = '$user_name'");   
        mysqli_close($con);

【讨论】:

  • 我可以将$con 更改为$conn,因为我已经在所有其他文档中使用过。 &lt;?php define('DB_HOST', "localhost"); // database location define('DB_NAME', "ara"); // database name define('DB_USER', "root"); // user name define('DB_PASS', ""); // password $conn = mysqli_connect(DB_HOST, DB_USER, DB_PASS) or die("&lt;div class='msgBox1'&gt;MySQL Error: Oops! UNABLE to CONNECT to the DATABASE!&lt;/div&gt;"); mysqli_select_db($conn, DB_NAME) or die("&lt;div class='msgBox1'&gt;MYSQL ERROR&lt;/div&gt;"); mysqli_set_charset($conn, 'utf8') or die("&lt;div class='msgBox1'&gt;UNABLE to SET database connection&lt;/div&gt;"); ?&gt;
  • 它说`未定义的变量:conn`
  • $conn = mysqli_connect("localhost","root","","ara") 或 die("Error" .mysqli_error($link));改变这个变量
  • 我应该在哪里更改该变量
  • 我改了答案请关注
【解决方案2】:

感谢@Banjamin 和@Qaisar

你在函数中使用了 $con

uploadImageFile($user_name),

所以你应该将变量$con 传递给这个函数,一些东西 喜欢

uploadImageFile($user_name, $con) 当然,那你必须改变 你的函数接受了参数。

【讨论】:

    猜你喜欢
    • 2013-11-26
    • 2012-10-07
    • 2017-10-07
    • 2011-02-14
    • 1970-01-01
    • 2012-11-17
    • 2019-09-02
    • 2013-04-26
    • 1970-01-01
    相关资源
    最近更新 更多