使用php将图片插入数据库

时间:2014-03-06 21:09:58

标签: php mysql

你好我有一个表格有很多输入(姓名,姓氏,图片,年龄..),我想把所有这些信息提交到我的数据库,我知道如何做一个简单的输入,但与图片我有一些问题 有谁可以帮助我吗 我的html文件是

<form action="insertion.php" method="post" >
<table >
 <tr>
 <td><strong>Titre</strong></td>
 <td><input name="titre" type="text" value=""  /></td>
 </tr>
 <tr>
 <td><strong>Annee</strong></td>
 <td><input name="annee" type="number" value=""  /></td>
 </tr>
 <tr>
 <td><strong>Genre musical</strong></td>
 <td><input name="Gmusical" type="texte" value="" /></td>
 </tr>
 <tr>
 <td>
 <strong>Picture</strong>
 </td>
 <td>
 <input type="file" name="img"/>
 </td>
 </tr>
</table>
 <input type="submit" value="Submit "  />
</form>

我的文件insertion.php要提交到数据库

<?php
include("connexion.php");
$titre=$_POST['titre'];
$annee=$_POST['annee'];
$Gmusical=$_POST['Gmusical'];
$picture=$_POST['img'];

$req="INSERT INTO `cd`
(`titre`, `Annee`, `genremusical`, `Image`) 
VALUES 
 ('$titre','$annee','$Gmusical','$picture');";

            if (mysql_query($req))
            {
            echo "ok";
            }
            else 
            echo 'ko';
            }

4 个答案:

答案 0 :(得分:3)

通常,您不希望将实际的BLOB(二进制大对象)数据类型存储在数据库中。您存储位于Web服务器某处的图像的路径。

因此,在“图像”列中,您将存储路径“images / photo1103.jpg”。

要显示照片: echo "<img src=". $image_query_fetch['Image'] .'" alt=\"\" />";

答案 1 :(得分:2)

列类型可以是varchar 我还建议使用mysqli而不是mysql

以下代码可以帮助您: 编辑代码 将此尝试作为一个文件,如果您还没有尝试过,可以尝试使用echo $picture_name;进行调试。

可选 还有一件事可以帮助ob_start();将此文件置于<?php标记之后的文件顶部,而不是在页面底部以ob_flush();?>关联标签让你得到类似:enter image description here

的内容
<?php
include('connexion.php');

function outout_errors($error) {
    echo '<ul><li>',$error.'</li></ul>';
}

if($_POST) {
    $titre = mysql_real_escape_string(strip_tags($_POST['titre']));
    $annee = mysql_real_escape_string(strip_tags($_POST['annee']));
    $Gmusical = mysql_real_escape_string(strip_tags($_POST['Gmusical']));
    $picture_tmp = $_FILES['img']['tmp_name'];
    $picture_name = $_FILES['img']['name'];
    $picture_type = $_FILES['img']['type'];

    $allowed_type = array('image/png', 'image/gif', 'image/jpg', 'image/jpeg');

    if(in_array($picture_type, $allowed_type)) {
        $path = 'images/'.$picture_name; //change this to your liking
    } else {
        $error[] = 'File type not allowed';
    }

    if(!is_numeric($annee)) {
        $error[] = $annee.' is not a number';
    }

    if(!empty($error)) {
        echo '<font color="red">'.output_errors($error).'</font>';

    } else if(empty($error)) {
        $req="INSERT INTO `cd` (`titre`, `Annee`, `genremusical`, `Image`)  VALUES ('$titre', '$annee', '$Gmusical', '$path')";
        move_uploaded_file($picture_tmp, $path);

        if (mysql_query($req)) {
            echo 'ok';
        } else {
            echo 'ko';
        }
    }
}


?>

<form action="" method="post" enctype="multipart/form-data">
    <table>
     <tr>
        <td><strong>Titre</strong></td>
        <td><input name="titre" type="text"></td>
     </tr> <tr>
        <td><strong>Annee</strong></td>
        <td><input name="annee" type="text"></td>
     </tr><tr>
        <td><strong>Genre musical</strong></td>
        <td><input name="Gmusical" type="text"></td>
     </tr><tr>
        <td><strong>Picture</strong></td>
     <td><input type="file" name="img"></td>
     </tr>
     <tr>
        <input type="submit">
     </tr>
    </table>
</form>

答案 2 :(得分:1)

您必须将数据库中“image”列的列类型设置为BLOB或LONGBLOB(或others),例如:

CREATE TABLE cd (
 ... 
 Image LONGBLOB, 
); 

然后只需像你一样插入数据。

通常更好的解决方法是将文件存储在文件系统中,并仅保存数据库中文件的路径。如果您想这样做,可能需要查看this SO question。 (另见this one。)

(正如用户 Fred -ii - 在评论中指出,您还必须设置表单的 enctype -Tag到“multipart / form-data”。)

答案 3 :(得分:-1)

<?php include("config.php");?>
<?php
error_reporting("0");
if(isset($_POST['submit'])) {   
    // Get image name   
    $image = $_FILES['image']['name'];
    // Get text
    $image_name= $_POST['image_name'];
    // Image file directory 
    $target = "images/".basename($image);
    // Now insert query
    $sql = "INSERT INTO addimage(image, image_name) values ('$image','$image_name')";
    // Execute query
    mysqli_query($dbcon,$sql);  
    if(move_uploaded_file($_FILES['image']['tmp_name'],$target))    
    {
      $img = "image uploading successfully";
    } else {
      $img = "faild image uploading";   
    }   
}   
?>  

<!DOCTYPE html>
<html>    
<head>
  <title>Upload image with text Field</title>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <script type="text/javascript" src="script.js"></script>
</head>

<body>
  <div class="container">
    <div class="col-sm-10">
      <h1>Image uploading with text field</h1>
      <div class="card-box">
        <div class="row">
          <div class="col-md-6">
            <div class="p-20">
              <form method="post" enctype="multipart/form-data">
                <h5 class="alert-success">
                  <?php if(isset($img)){ echo $msg;}?>
                </h5>
                <div class="form-group">
                  <label class="control-label">Image Name</label>
                  <input type="text" class="form-control" data-size="sm" name="image_name">
                </div>
                <div class="form-group">
                  <label class="control-label">Small file style</label>
                  <input type="file" class="filestyle" data-size="sm" name="image">
                </div>
                <div class="form-group">
                  <input type="submit" class="btn btn-success" value="Save" name="submit">
                </div>
              </form>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</body>    
</html>