单击“上传”按钮进入数据库后,我的图像无法上传

时间:2014-04-07 02:59:31

标签: javascript php jquery mysql image

我将我的图片上传到数据库但点击上传按钮后,它没有上传到数据库,它只是刷新,当我手动将数据库添加到数据库时,它进入我的网站,这是我的图片

Click here

这是上传图片的源代码:

    <?php
include('lock.php');

mysqli_connect("localhost", "root", "Bhawanku", "members");

if(isset($_POST['emp_name'])){

    $content=file_get_contents($_FILES['pic']['tmp_name']);

    @list(, , $imtype, ) = getimagesize($_FILES['pic']['tmp_name']);

    if ($imtype == 3){
        $ext="png";
    }elseif ($imtype == 2){
        $ext="jpeg";
    }elseif ($imtype == 1){
        $ext="gif";
    }

    $q="insert into employees set empname='".$_POST['emp_name']."',profile_pic='".$content."',ext='".$ext."'";
    mysql_query($q);
    header("location: getting_started.php");
}
?>

<html>
<head>
    <title>Getting started..</title>
</head>
<style>
    body{
        background-color: #993333;
    }

    #box{
        -webkit-box-shadow: 0px 0px 10px 0px rgba(110, 48, 50, 0.75);
        -moz-box-shadow: 0px 0px 10px 0px rgba(110, 48, 50, 0.75);
        box-shadow: 0px 0px 10px 0px rgba(110, 48, 50, 0.75);
        background-color: #F0F0F0;
        position: fixed;
        width: 70%;
        left: 18%;
        top: 8%;
        height: 70%;
    }

    #user_pic{
        position: absolute;
        top: 18%;
        left: 12%;
    }

    h1{
        position: fixed;
        left: 19%;
        font-family: Throw My Hands Up in the Air;
    }

    #btn_pos{
        position: absolute;
        left: 45%;
        top: 38%;
    }

    #next_btn{
        border:1px solid #2a2c2f; -webkit-border-radius: 3px; -moz-border-radius: 3px;border-radius: 3px;font-size:12px;font-family:arial, helvetica, sans-serif; padding: 7px 30px 8px 30px; text-decoration:none; display:inline-block;text-shadow: -1px -1px 0 rgba(0,0,0,0.3);font-weight:bold; color: #FFFFFF;
        background-color: #45484d; background-image: -webkit-gradient(linear, left top, left bottom, from(#45484d), to(#000000));
        background-image: -webkit-linear-gradient(top, #45484d, #000000);
        background-image: -moz-linear-gradient(top, #45484d, #000000);
        background-image: -ms-linear-gradient(top, #45484d, #000000);
        background-image: -o-linear-gradient(top, #45484d, #000000);
        background-image: linear-gradient(to bottom, #45484d, #000000);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#45484d, endColorstr=#000000);
        margin: 140px 0px 0px 220px;
        cursor: pointer;
    }

    #btn_upload{
        border:1px solid #2a2c2f; -webkit-border-radius: 3px; -moz-border-radius: 3px;border-radius: 3px;font-size:12px;font-family:arial, helvetica, sans-serif; padding: 7px 30px 10px 30px; text-decoration:none; display:inline-block;text-shadow: -1px -1px 0 rgba(0,0,0,0.3);font-weight:bold; color: #FFFFFF;
        background-color: #45484d; background-image: -webkit-gradient(linear, left top, left bottom, from(#45484d), to(#000000));
        background-image: -webkit-linear-gradient(top, #45484d, #000000);
        background-image: -moz-linear-gradient(top, #45484d, #000000);
        background-image: -ms-linear-gradient(top, #45484d, #000000);
        background-image: -o-linear-gradient(top, #45484d, #000000);
        background-image: linear-gradient(to bottom, #45484d, #000000);filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#45484d, endColorstr=#000000);
        margin: 10px 0px 0px 0px;
        cursor: pointer;
    }

    #img_pos{
        position: fixed;
        top: 20%;
        left: 22%;
        width: 25%;
        height: 30%;
    }


</style>
<body>
<div id="box">
    <h1>Add your profile pic to look better ;)</h1>
<?php
$q="select * from employees";
$resultset=mysql_query($q);
if(mysql_num_rows($resultset)==0){
    ?>
    <div id="user_pic">
        <img id="img_pos" src="Images/default_user.png" >
    </div>
<?php
}
while($rec=mysql_fetch_array($resultset)){
    ?>
        <img id="img_pos" src="load_image.php?pic_id=<?php echo $rec['id'];?>" >
<?php
}
?>

    <div id="btn_pos">
    <form method="post" action="" enctype="multipart/form-data">
        <input type="file" name="pic"><br>
        <button id="btn_upload" type="submit">Upload now..</button>
    </form>
        <form>
            <button id="next_btn" type="submit" name="next">Next</button>
        </form>
    </div>
</div>
</body>
</html>

这是数据库的源代码:

<?php
mysql_connect("localhost","root", "Bhawanku");
mysql_select_db("members");
$q="select * from employees where id=".$_GET['pic_id'];
$rec=mysql_fetch_array(mysql_query($q));
$data=$rec['profile_pic'];
header('Content-Length: '.strlen($data));
header("Content-type: image/".$rec['ext']);
echo $data;

EDITED: -

你好,我发现我的问题是因为我没有使用这个

 <input type="text" name="emp_name" />

当我将其删除到我的代码中时,由于此代码,它根本不会将我的图片保存到数据库中,如果我使用它,它将更新我的图片,所以你能告诉我不能用于的方式我的代码和图片将能够上传到数据库请帮助:(因为我的所有问题都是由于这个原因引起的..

1 个答案:

答案 0 :(得分:0)

您正在上传二进制图像数据,然后将其合并到文本查询中以发送到数据库服务器。我认为查询失败并出现语法错误,但您永远不会知道,因为您没有检查任何错误。

作为初始步骤,将您的查询行更改为:

mysql_query($q) or die(mysql_error());

这至少会报告任何SQL错误。

你不应该真正将图像存储在数据库中 - 文件系统要好得多 - 但如果必须,首先在文件内容上使用base64_encode()

附注:

  • mysql_*()已弃用 - 请改用mysqli_()PDO
  • 在查询中使用它们之前,您没有转义$ _POST变量 - 这是SQL注入敏感性。请将此作为最低 mysql_real_escape_string(),但请考虑准备好的陈述。

修改 - 您正在混合mysql()mysqli()个功能。他们是不同的,不能像这样混合。仅使用'mysqli()'。 (感谢@Phile的那个捕获)。