簡體   English   中英

將圖像上傳到MySQL PHP

[英]Upload images to MySQL PHP

我正在嘗試將圖像上傳到mysql,當我嘗試使用此代碼時,似乎只插入了databse,但沒有圖像文件名上傳到我的服務器,我能知道出了什么問題

<form method="post" action="">
    <?php
    include ("setting/connect.php");
    $g = mysql_query("select max(id) from abc");
    while($id=mysql_fetch_array($g))
    {
    ?>
    <input type="text" name="id" value="<?php echo $id[0]+1; ?>" hidden/>
    <?php }
    ?>


    <div class="form-group">
        <label>Image</label>
        <input name="image" type="file">
    </div>

    <div class="form-group input-group">
        <span class="input-group-addon">Title</span>
        <input name="title" type="text" class="form-control" placeholder="">
    </div>

    <center><input class="btn btn-primary" type="submit" name="cmdadd" value="ADD" />
    <button type="button" class="btn btn-danger">BACK</button></center>
    </div>
    <!-- /.panel-body -->
</form>

我的PHP:

<?php   
        $id = $_POST['id'];
        $title= trim($_POST['title']);
    $path = "uploads/"; 
        $tmp_name = $_FILES['image']['tmp_name'];
        $name = $_FILES['image']['name'];
    if(isset($_POST['cmdadd'])){
        if(empty($id)||empty($title))
        {
            echo "<center>Error!</center>";
        }
    if($_FILES["image"]["error"] > 0)
        {
            echo "<font size = '5'><font color=\"#e31919\">Error: NO CHOSEN FILE <br />";
            echo"<p><font size = '5'><font color=\"#e31919\">INSERT TO DATABASE FAILED";

        }


    else{

        move_uploaded_file($tmp_name,$path.$name);
        $file="uploads/".$name;
        include "setting/connect.php";
        mysql_query("SET NAMES 'UTF8'");
        $i = mysql_query("insert into abc values ('".$id."','".$file."','".$title."')");
        if($i==true){
        echo '<META HTTP-EQUIV="Refresh" Content="0; URL=danhsachtindang.php">';
                    }
            //if($i==true){
            //header('Location:index.php');
            //exit;
            //mysql_close();
            //}
        }
    }
    ?>

結果是:當我嘗試在mysql表中上傳例如picture.jpg時,該列僅出現“ avatars /”,並且沒有任何內容上傳到服務器。

您的表單缺少上載文件時所需的enctype="multipart/form-data"

修改為:

<form method="post" action="" enctype="multipart/form-data">

查閱手冊: http : //php.net/manual/en/function.move-uploaded-file.php

另外,請確保該文件夾已設置了適當的寫入權限。

  • 有關設置文件夾/文件權限的更多信息,請查閱PHP.net上的chmod

旁注1:

由於您使用的是$path = "uploads/"; 假設您正在從服務器的根目錄運行代碼。

如果不是這種情況,則需要相應地進行調整。

即: $path = "../uploads/"; 取決於文件執行位置。

只是一個見識


旁注2:

您當前的代碼可以進行SQL注入 使用准備好的語句 ,或使用帶有准備好的語句的PDO

mysql_*函數棄用通知:

http://www.php.net/manual/zh/intro.mysql.php

自PHP 5.5.0起不推薦使用該擴展,不建議編寫新代碼,因為將來會刪除該擴展。 相反,應使用mysqliPDO_MySQL擴展名。 另請參見MySQL API概述,以獲取選擇MySQL API時的更多幫助。

這些功能使您可以訪問MySQL數據庫服務器。 有關MySQL的更多信息,請參見» http://www.mysql.com/

可以在» http://dev.mysql.com/doc/中找到MySQL的文檔。


錯誤報告添加到文件頂部,這將在生產測試期間提供幫助。

error_reporting(E_ALL);
ini_set('display_errors', 1);

它僅在列上顯示為“ avatars /”,並且沒有任何內容上傳到服務器

您是否要上傳到avatars/uploads/

檢查一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM