我試圖上傳圖片到MySQL,當我嘗試使用這段代碼,它似乎只是插入數據庫,但沒有圖像文件名上傳到我的服務器,我可以知道什麼地方出錯上傳圖片到MySQL PHP
<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();
//}
}
}
?>
結果:當我嘗試上傳例如,picture.jpg,在mysql表,它僅在列出來「化身/」並沒有任何上傳到服務器。
你得到最後一個ID的方式,然後增加它是不好的。如果這個腳本是由兩個客戶端同時運行的,你會得到ID衝突。一個客戶端將獲得最大ID並將其增加,然後當他們在窗體上工作時,另一個用戶將獲得相同的ID和相同的遞增值。第一個用戶的表單將會成功,第二個用戶將擁有相同的ID,並且您將嘗試插入重複的主鍵,從而導致數據庫失敗。 – 2014-09-12 14:45:04
您可以使用「PDO :: lastInsertId」這是獲取最後一個ID的更好方法,但如果您不需要最後一個ID,請讓它自動遞增。 – 2014-09-12 14:45:54
**不再支持** mysql_ *'函數,它們是[**官方不推薦使用的**](https://wiki.php.net/rfc/mysql_deprecation),**不再維護**並且將來會[**刪除**](http://php.net/manual/en/function.mysql-connect.php#warning)。您應該使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)更新您的代碼,以確保您的項目未來的功能。 – Kermit 2014-09-12 14:49:53