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를 가지며 중복 된 기본 키를 삽입하려고 할 때 DB에 오류가 발생합니다. –
마지막 ID를 얻는 더 좋은 방법 인 "PDO :: lastInsertId"를 사용할 수 있지만 마지막 ID가 필요없는 경우 자동으로 증가시킵니다. –
** 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