2016-10-03 41 views
3

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

我的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

错误为 'images_tbl'( 'images_path', 'submission_date')VALUES(” ../Photos/03- 10-2016-1475478958.jpg','2016-10-03')== ---->你的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以在''images_tbl'('images_path','submission_date')附近使用正确的语法VALUES('../Photos/03-10-2016-14'in line 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

您正在使用周围的表名引号和列,它应该是反引号,所以更改:

$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注入并且您正在使用现在已弃用的obsolet功能 - 更改为mysqliPDO并开始使用预准备语句。


当你的数据库连接是mysqli你需要使用mysqli_query和其他相关功能,而不是将它们与老mysql功能混合。

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

爵士仍然有在INSERT误差为'images_tbl'('images_path','submission_date')VALUES(” ../Photos/03-10-2016-1475479781.jpg','2016-10-03 ')== ---->没有选择数据库 –

+0

您是否也可以共享'configdb.php'代码 – RamRaider

+0

<?php \t \t $ servername =“localhost”; \t $ username =“root”; \t $ password =“”; \t $ dbname =“firstdb”; \t $ conn = mysqli_connect($ servername,$ username,$ password,$ dbname); ($ conn-> connect_error) \t如果($ conn-> connect_error) \t { \t die(“connection failed”。$ conn-> connect_error); \t} \t回声“连接成功”; \t \t ?> –

1

您有错误在你的MySQL查询,无需在查询中使用使用singlequotes的表名BACKTICK

$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")."')"; 
+0

仍然有错误INSERT到images_tbl('images_path','submission_date')VALUES(” ../照片/ 03-10-2016-1475479848.jpg','2016-10-03')== ---->没有选择数据库 –

+0

检查你的configdb.php是否包含?或者您选择了正确的数据库? –

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?

+0

我已经申请,但之前得到Mysqli和Msql混合错误感谢任何方式现在解决 –

相关问题