1

我只是一个初学者,需要你的帮助。

我制作了一个上传脚本(MySQL),但需要上传图像/文件。我不知道在哪里放置代码的上传部分。

这是我的代码:

     <?php
        error_reporting(E_ALL);
         mysql_connect("xx.xx.nl","xx","xxxx") or 
      die("Kan geen verbinding maken met de server!");
     mysql_select_db("xxx") or die("Kan de ingevoerde database niet vinden");

     if ($_POST){
        // file upload code
        if (is_uploaded_file($_FILES['img']['tmp_name'])) {
            move_uploaded_file($_FILES['img']['tmp_name'], 'test/upload/'.$_FILES['img']['name']);
        }


        $query = "INSERT INTO product (
        naam,
        id,
        titel,
        druk,
        img,
        beschrijving) 

    VALUES ('".$_POST['naam']."',
            '".$_POST['id']."',
            '".$_POST['titel']."',
            '".$_POST['druk']."',
        '".$_FILES['img']['name']."',
        '".$_POST['beschrijving']."')";


      echo $query;
      mysql_query($query) or die("Kan niet invoegen.<br>". mysql_error());
     header("location:login.php");

  exit;
    }

   ?>



<table>
    <form action='voegtoe.php' method='POST' enctype='multipart/form-data'>


        <tr><td>    Auteur : </td><td> <select name="naam"><option value="0">Selecteer</option>
    <?php
    include("../includes/config.php");
    $get=mysql_query("SELECT naam FROM auteurs");
    while($row = mysql_fetch_assoc($get))
    {
    ?>
    <option value = "<?php echo($row['naam'])?>" >
    <?php echo($row['naam']) ?>
    </option>
        <?php
        }               
    ?>

</select></tr></td>

   <tr><td>  Titel : </td><td> <input style="background-color: #757474;" type="text" 

    name="titel">  </tr></td>
       <tr><td>  Druk : </td><td> <input style="background-color: #757474;" type="text" name="druk">    </tr></td>
       <tr><td>  Beschrijving : </td><td> <textarea style="background-color: #757474;"  cols="25" rows="5" name="beschrijving"></textarea>  </tr></td>
       <tr><td>  Afbeelding : </td><td> <input style="background-color: #757474;" type="file" name="img" accept="image/jpg,image/gif,image/png" /> </tr></td>
       <tr><td> </td><td>   <input class="button" type="submit" value="Opslaan" >   </tr></td>


        </form>
      </table>

代码已更新

4

3 回答 3

0

您需要通过 $_FILES 变量处理文件上传。 http://php.net/manual/en/reserved.variables.files.php

于 2013-11-14T08:35:02.833 回答
0

您必须使用 $_FILES,然后使用move_uploaded_file(). 然后你必须将它存储在你的数据库中BLOB

使用本教程 - http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploading-files-to-mysql-database.aspx

PS:为什么要上传到DB?为什么不保存到服务器?

您应该将其存储在服务器上,并将路径写入 DB:

if (is_uploaded_file($_FILES['img']['tmp_name'])) {
  move_uploaded_file($_FILES['img']['tmp_name'], 'some_folder_with_images/'.$_FILES['img']['name']);
}

然后这将是您的查询:

$query = "INSERT INTO product (
                naam,
                id,
                titel,
                druk,
                img,
                beschrijving) 

            VALUES ('".$_POST['naam']."',
                    '".$_POST['id']."',
                    '".$_POST['titel']."',
                    '".$_POST['druk']."',
                '".$_FILES['img']['name']."',
                '".$_POST['beschrijving']."')";

PS:mysql_*已弃用,请使用mysqli_*.

并改变这一点:

<form action='voegtoe.php' method='POST'>

<form action='voegtoe.php' method='POST' enctype='multipart/form-data'>

否则您的文件将不会被上传。

于 2013-11-14T08:37:43.427 回答
0

您只需要在 mysql_query 之后放置上传代码,但请记住放置一个条件并将上传代码写入条件中,该条件将在 mysql 查询成功时执行,否则即使查询有任何错误,文件也会被上传并且会增加冗余数据

于 2013-11-14T08:42:22.123 回答