Php 图像上传到mysql

Php 图像上传到mysql,php,mysql,Php,Mysql,您好,我目前能够上传一个文件到我的网站上的文件夹,但我不能完全理解我应该如何获得从我的文件到我的数据库的路径 <?php if(isset($_FILES['file']) ) { move_uploaded_file($_FILES['file']['tmp_name'],'files/'.$_FILES['file']['name']); session_start(); $username = $_SESSION['user']; $userpic = ???? <-- w

您好,我目前能够上传一个文件到我的网站上的文件夹,但我不能完全理解我应该如何获得从我的文件到我的数据库的路径

<?php
if(isset($_FILES['file']) )
{

move_uploaded_file($_FILES['file']['tmp_name'],'files/'.$_FILES['file']['name']);

session_start();
$username = $_SESSION['user'];
$userpic = ???? <-- what am i supposed to call here to put the path to my image file 

include ("connect.php");
$sql = $con->prepare('INSERT INTO users (username,userpic) VALUES (?,?)');
$sql->bind_param("ss",$username,$userpic);
$sql->execute(); 
$sql->close();
$con->close(); 
}
else{
echo "no files";
}
?>


所以事情应该是这样的,当有人上传一张图片时,图片应该直接插入到“userpic”表中,我读过其他类似的帖子,但它们并不完全相同。。我该怎么做?谢谢你的帮助!!(在php上不是最聪明的,但我正在尝试)

您不会希望将整个URL存储在数据库中。您只需要它在服务器上的路径。这是将tmp文件移动到新位置的部分。在你的情况下,它将是以下

$userpic = 'files/'.$_FILES['file']['name'];

如果您在上传文件时使用客户端提供的名称存储文件,则可能会覆盖图像(例如,如果两个用户上载me.png)-最好使用用户名存储图像,然后您甚至不需要mysql表将用户连接到他们的图片

<?php
session_start();
$username = $_SESSION['user'];
if(empty($username)){
   echo "Error: no username found";
}
else if(isset($_FILES['file']) ){
   //create a path to move file to  
   $newpath = 'files/'.$username;
    
   if (move_uploaded_file($_FILES['file']['tmp_name'], $newpath)) {
    echo "File is valid, and was successfully uploaded.\n";
   } else {
    echo "Error: Possible file upload attack!\n";
   }
}
else{
  echo "No Files to save";
}
这允许您进行其他检查,例如,是否允许用户查看图像

这里仍然有大量的内容可以涵盖,希望这能让您有足够的时间继续前进,但在投入生产之前,请阅读更多关于文件上传安全的内容

你原来的问题 如果确实希望在数据库中存储有关图像的信息,可以执行以下操作:

<?php
session_start();
include ("connect.php");

$username = $_SESSION['user'];
if(empty($username)){
   echo "Error: no username found";
}
else if(isset($_FILES['file']) ){
    //create a path to move file to  
    $filename = basename($_FILES['file']['name']);

    $newpath = 'files/'.$filename;
    if (move_uploaded_file($_FILES['file']['tmp_name'], $newpath)) {
        echo "File is valid, and was successfully uploaded.\n";
        $sql = $con->prepare('INSERT INTO users (username,userpic) VALUES (?,?)');
        $sql->bind_param("ss",$username,$filename);
        $sql->execute(); 
        $sql->close();
        $con->close();          
    } else {
        echo "Error: Possible file upload attack!\n";
    }
}
else{
    echo "No Files to save";
}

所以我应该删除我的整个sql问题,只写那个代码?这对我来说不起作用,thoThnaks解释说,我将在上传图像时更多地研究如何保护自己。。
<?php
session_start();
include ("connect.php");

$username = $_SESSION['user'];
if(empty($username)){
   echo "Error: no username found";
}
else if(isset($_FILES['file']) ){
    //create a path to move file to  
    $filename = basename($_FILES['file']['name']);

    $newpath = 'files/'.$filename;
    if (move_uploaded_file($_FILES['file']['tmp_name'], $newpath)) {
        echo "File is valid, and was successfully uploaded.\n";
        $sql = $con->prepare('INSERT INTO users (username,userpic) VALUES (?,?)');
        $sql->bind_param("ss",$username,$filename);
        $sql->execute(); 
        $sql->close();
        $con->close();          
    } else {
        echo "Error: Possible file upload attack!\n";
    }
}
else{
    echo "No Files to save";
}