Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将帖子图片url上传到mysql数据库中,并将多个url放在一行中_Php_Mysql - Fatal编程技术网

Php 将帖子图片url上传到mysql数据库中,并将多个url放在一行中

Php 将帖子图片url上传到mysql数据库中,并将多个url放在一行中,php,mysql,Php,Mysql,我目前正在创建一个网站,你也可以放置带有图片的博客帖子,我已经有了上传文件的代码,但我也想把它放在我的MYSQL行中 这是我的post_picture.php: <form action="" method="POST" enctype="multipart/form-data"> <label for="file">Profile Pic:</label> <input type="file" name="ProfilePic" id="Profile

我目前正在创建一个网站,你也可以放置带有图片的博客帖子,我已经有了上传文件的代码,但我也想把它放在我的MYSQL行中

这是我的post_picture.php:

<form action="" method="POST" enctype="multipart/form-data">
<label for="file">Profile Pic:</label> <input type="file" name="ProfilePic" id="ProfilePic" /><br />

<input type="submit" name="submit" value="Submit" />

</form>


<?php
$con = mysql_connect("localhost", "a1070rik", "");
mysql_select_db("portals",$con);
if(isset($_POST[submit])){
    $ProfilePicName = $_FILES["ProfilePic"]["name"];
    $ProfilePicType = $_FILES["ProfilePic"]["type"];
    $ProfilePicSize = $_FILES["ProfilePic"]["size"];
    $ProfilePicTemp = $_FILES["ProfilePic"]["tmp_name"];
    $ProfilePicError = $_FILES["ProfilePic"]["error"];

    $RandomAccountNumber = uniqid();
    move_uploaded_file($ProfilePicTemp, "Content/" . $RandomAccountNumber . ".png");
}
?>

个人资料图片:
下面是我的MYSQL表结构的图片: 而且我想在一行中有多个图像url,这可能吗

谢谢

编辑:

查询的其他信息:
我的数据库名是“portalen”,行名是“leerlingen”。

首先,看看您的phpMySql屏幕截图,我建议您看看字段长度文档。您实际上不需要使用varchar(1000)来保存电子邮件地址,也不需要使用varchar(9999)来存储文件名

对于您想要做的事情,您只需要对MySQL进行一个查询,在那里添加$RandomAccountNumber。“.png”到img_url字段


警告:脚本假定文件为PNG。我建议您查看文档或一些示例,了解如何确定文件mime类型,以便为保存的文件添加正确的扩展名。这里有一个很好的例子:

我自己找到了答案,这可能不是最安全的方法,但目前它仍然有效。 对于任何想要它的人,这里是代码:

<?php
if(isset($_POST[upload])){
    $fileExistsFlag = 0; 
    $fileName = uniqid() . $_FILES['Filename']['name'];
    $link = mysqli_connect("localhost","a1070rik","","photos") or die("Error ".mysqli_error($link));
    /*
    *   If file is not present in the destination folder
    */
    if($fileExistsFlag == 0) { 
        $target = "files/";     
        $fileTarget = $target.$fileName;    
        $tempFileName = $_FILES["Filename"]["tmp_name"];
        $fileDescription = $_POST['Description'];   
        $result = move_uploaded_file($tempFileName,$fileTarget);
        /*
        *   If file was successfully uploaded in the destination folder
        */
        if($result) { 
            echo "Your file <html><b><i>".$fileName."</i></b></html> has been successfully uploaded";       
            $query = "INSERT INTO images(filepath,filename,description) VALUES ('$fileTarget','$fileName','$fileDescription')";
            $link->query($query) or die("Error : ".mysqli_error($link));            
        }
        else {          
            echo "Sorry !!! There was an error in uploading your file";         
        }
        mysqli_close($link);
    }
    /*
    *   If file is already present in the destination folder
    */
    else {
        echo "File <html><b><i>".$fileName."</i></b></html> already exists in your folder. Please rename the file and try again.";
        mysqli_close($link);
    }}; 
?>
<form method="post" action="" enctype="multipart/form-data">
    <p>File :</p>
    <input type="file" name="Filename"> 
    <p>Description</p>
    <textarea rows="10" cols="35" name="Description"></textarea>
    <br/>
    <input TYPE="submit" name="upload" value="Submit"/>
</form>
只需将代码放入.sql文件并导入即可


谢谢大家。

谢谢,我会调查的。你也知道如何把它放在我的MYSQL行吗?你的帖子没有提供足够的信息来为你构建查询。需要表名、字段名和数据,你需要将这些数据与文件名一起添加到每条记录上。我已经找到了将其放在MYSQL表中的代码,我现在唯一需要了解的是如何将多个URL放在一行中。如果这是可能的,则取决于您希望如何处理这些多个URL,以及在查询表时希望如何使用它们。如果您想在单个记录中使用多个图像,我建议通过添加第二个表并在一对多上关联这两个表来进行规范化。如果这不是一个选项,您可以将多个文件名添加到一个数组中,将其序列化并保存到所需字段中。然后,在查阅记录时,您只需反序列化字段的值,就会得到一个包含文件名的数组。您找到的代码可能会解决您的问题,但可能不太清楚,无法促进学习和解决其他问题。由于许多原因,代码非常不安全,其中一些原因非常基本,例如:您不检查文件类型,并且添加rand()不能保证您不会有另一个同名文件。uniqid()可以更好地用于此目的。
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Databank: `photos`
--

-- --------------------------------------------------------

--
-- Tabelstructuur voor tabel `images`
--

CREATE TABLE IF NOT EXISTS `images` (
  `filepath` varchar(999) NOT NULL,
  `filename` varchar(1000) NOT NULL,
  `description` varchar(999) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;