[英]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
另外,請確保該文件夾已設置了適當的寫入權限。
旁注1:
由於您使用的是$path = "uploads/";
假設您正在從服務器的根目錄運行代碼。
如果不是這種情況,則需要相應地進行調整。
即: $path = "../uploads/";
取決於文件執行位置。
只是一個見識 。
旁注2:
您當前的代碼可以進行SQL注入 。 使用准備好的語句 ,或使用帶有准備好的語句的PDO 。
mysql_*
函數棄用通知:
http://www.php.net/manual/zh/intro.mysql.php
自PHP 5.5.0起不推薦使用該擴展,不建議編寫新代碼,因為將來會刪除該擴展。 相反,應使用mysqli或PDO_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.