使用PHP错误在数据库中存储图像

时间:2016-10-03 07:25:15

标签: php mysql

我想在PHP中创建个人资料页面,我应该显示登录用户的信息,包括用于此目的的个人资料照片。我想将上传的图像存储在数据库中。我编写了脚本,但它在SQL语句中给了我一些错误。

我的PHP脚本

<?php
include("configdb.php");
    function GetImageExtension($imagetype)
     {
       if(empty($imagetype)) return false;
       switch($imagetype)
       {
           case 'image/bmp': return '.bmp';
           case 'image/gif': return '.gif';
           case 'image/jpeg': return '.jpg';
           case 'image/png': return '.png';
           default: return false;
       }
     }
if (!empty($_FILES["uploadedimage"]["name"])) {
    $file_name=$_FILES["uploadedimage"]["name"];
    $temp_name=$_FILES["uploadedimage"]["tmp_name"];
    $imgtype=$_FILES["uploadedimage"]["type"];
    $ext= GetImageExtension($imgtype);
    $imagename=date("d-m-Y")."-".time().$ext;
    $target_path = "../Photos/".$imagename;
if(move_uploaded_file($temp_name, $target_path)) {
    $query_upload="INSERT into 'images_tbl' ('images_path','submission_date') VALUES
('".$target_path."','".date("Y-m-d")."')";
    mysql_query($query_upload) or die("error in $query_upload == ----> ".mysql_error()); 
}else{
   exit("Error While uploading image on the server");
}
}
?>;

我收到了以下错误

  INSERT进入&#39; images_tbl&#39;错误(&#39; images_path&#39;,&#39; submission_date&#39;)VALUES(&#39; ../ Photos / 03-10-2016-1475478958.jpg&#39;,&#39; 2016-10 -03&#39;)== ----&gt;您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在&#39;&#39; images_tbl&#39;附近使用。 (&#39; images_path&#39;,&#39; submission_date&#39;)价值观(&#39; ../照片/ 03-10-2016-14&#39;第1行**

4 个答案:

答案 0 :(得分:2)

您在表名和列周围使用引号应该是反引号,因此请更改:

$query_upload="INSERT into 'images_tbl' ('images_path','submission_date') VALUES
('".$target_path."','".date("Y-m-d")."')";

$query_upload="INSERT into `images_tbl` (`images_path`,`submission_date`) VALUES
('".$target_path."','".date("Y-m-d")."')";

也就是说,代码很容易被sql注入,并且您正在使用现已弃用且过时的mysql_*函数 - 更改为eitehr mysqliPDO并开始使用预准备语句。< / p>

由于您的数据库连接是mysqli,因此您需要使用mysqli_query和其他相关功能,而不是将它们与较旧的mysql功能混合使用。

$result=mysqli_query($conn, $query_upload) or die('error'); 

答案 1 :(得分:2)

你正在混合Mysqli和Mysql试试这个

 $query_upload="INSERT into images_tbl (`images_path`,`submission_date`) VALUES
('".$target_path."','".date("Y-m-d")."')";    
mysqli_query($conn,$query_upload) or die("error in $query_upload == ----> ".mysqli_error($conn)); 

而不是

 $query_upload="INSERT into 'images_tbl' ('images_path','submission_date') VALUES
('".$target_path."','".date("Y-m-d")."')";
    mysql_query($query_upload) or die("error in $query_upload == ----> ".mysql_error()); 

答案 2 :(得分:1)

你的mysql查询中有错误,在查询中使用反引号不需要在表名中使用单引号

$query_upload="INSERT into `images_tbl` (`images_path`,`submission_date`) VALUES
('".$target_path."','".date("Y-m-d")."')";

或在没有任何引用或反复使用的情况下使用。

$query_upload="INSERT into images_tbl (`images_path`,`submission_date`) VALUES
('".$target_path."','".date("Y-m-d")."')";

答案 3 :(得分:1)

请尝试以下查询,我相信它会有效。

$query_upload="INSERT INTO `images_tbl`(`images_path`, `submission_date`) VALUES ('".$target_path."','".date("Y-m-d")."')";

表和列的名称不应该用引号括起来。相反,要么使用反击,要么不使用。

注意:

起,

mysql_*已弃用。因此,请使用mysqli_*PDO Why shouldn't I use mysql_* functions in PHP?