我想在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行**
答案 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 mysqli
或PDO
并开始使用预准备语句。< / 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")."')";
表和列的名称不应该用引号括起来。相反,要么使用反击,要么不使用。
注意:强>
自php-5.5起, mysql_*
已弃用。因此,请使用mysqli_*
或PDO
Why shouldn't I use mysql_* functions in PHP?