2013-05-05 93 views
-1

我想上傳圖像,並通過PHP存儲在MySQL數據庫。但沒有圖像存儲在數據庫中。圖像不存儲在MySQL數據庫通過PHP

<form action="" method="get" name="frmPostImage" class="box" enctype="multipart/form-data"> 
    <table> 
     <tr> 
      <td><b>City:</b></td> 
      <td> 
       <select name="cityid"> 
        <?php 
        $sql = "SELECT cityid, cityname, countryname 
     FROM $t_cities ct 
      INNER JOIN $t_countries c ON ct.countryid = c.countryid 
     ORDER BY c.pos, ct.pos"; 
        $res = mysql_query($sql) or die(mysql_error()); 

        while($row=mysql_fetch_array($res)) 
        { 
         echo "<option value=\"$row[cityid]\""; 
         if ($row['cityid'] == $_REQUEST['cityid']) echo " selected"; 
         echo ">$row[countryname] > $row[cityname]</option>"; 
        } 

        ?> 
       </select> 
      </td> 
      </td> 
     </tr> 
     <tr> 
     <tr> 
      <td><b><?php echo $lang['POSTIMG_IMAGE_TITLE']; ?>:</b><span class="marker">*</span></td> 
      <td><input name="imgtitle" type="text" id="imgtitle" size="55" maxlength="100" value="<?php echo isset($data 

['imgtitle']); ?>"><br><img 
        src="images/spacer.gif"></td> 
     </tr> 

     <tr> 
      <td><b><?php echo $lang['POSTIMG_IMAGE_FILE']; ?>:</b><span class="marker">*</span></td> 
      <td><input name="img" type="file" size="45"><br><img src="images/spacer.gif"></td> 
     </tr> 

     <tr> 
      <td><b><?php echo $lang['POSTIMG_IMAGE_DESCRIPTION']; ?>:</b></td> 
      <td><textarea name="imgdesc" type="text" rows="5" cols="54"><?php echo $data['imgdesc']; ?></textarea><br><img 

src="images/spacer.gif"></td> 
      <td> <input type="hidden" name="do" value="save"><button type="submit">Go</button></td> 
     </tr> 
    </table> 

</form> 

以下代碼將其存儲到數據庫中。

$expiry = time()+($expire_images_after*24*60*60); 
     $expiry_dt = date("Y-m-d H:i:s", $expiry); 
     $city = $_REQUEST['cityid']; 
    // Temporary file name stored on the server 
     $tmpName = $_FILES['img']['tmp_name']; 

     $sql = "INSERT INTO $t_imgs 
       SET imgtitle = '$_GET[imgtitle]', 
        imgfilename = '$tmpName', 
        imgdesc = '$_GET[imgdesc]', 
        postername = '$data[postername]', 
        cityid = '$city', 
        ip = '$ip', 
        verified = '1', 
        enabled = '1', 
        createdon = NOW(), 
        expireson = '$expiry_dt', 
        timestamp = NOW()"; 

     mysql_query($sql) or die($sql.mysql_error()); 

     if (mysql_affected_rows()) 
     { 
      // Get ID 
      $sql = "SELECT LAST_INSERT_ID() FROM $t_imgs"; 
      list($imgid) = mysql_fetch_array(mysql_query($sql)); 

     } 
    }  

    ?> 
<h2><?php echo $lang['POST_IMAGE_SUCCESS']; ?></h2> 

我能夠存儲除圖像以外的每一個其他值。嘗試不同的組合,但沒有奏效。指導我... :)

+1

你好,很抱歉,但是這首先要求基本的調試。代碼到底在哪裏? '$ _FILES'是否填滿? (做'print_r($ _ FILES)'找出。)數據庫查詢是否真的有效?使用'mysql_error()'來查明。等等...... – 2013-05-05 09:05:32

+0

我做了print_r($ _ FILES)。它顯示Array()。 ??????? – 2013-05-05 09:14:15

+0

按照Pekka的建議。讀取輸出的數組,檢查$ tmpName的內容,然後您將能夠縮小問題的範圍。它看起來像你的圖像變量是空的,因此你寧願調查你的$ _FILES比你的SQL – 2013-05-05 10:58:35

回答

0

我覺得有可能是與MySQL的語句問題: 代替$ SQL = 「INSERT INTO $ t_imgs SET imgtitle

你應該使用$ SQL =」 INSERT INTO $ t_imgs值(imgtitle,...);

檢查這裏: http://dev.mysql.com/doc/refman/5.5/en/insert.html

+0

我沒有檢查它,因爲我得到除了圖像以外的其他所有數據值。 – 2013-05-05 09:04:15

+0

好的..作爲@promilpandey建議 - 試圖找出什麼是$ _FILES的輸出 – 2013-05-05 11:34:07

相關問題