照片上传查询错误

时间:2014-07-29 17:14:11

标签: php mysql

我有查询错误,说:

  INSERT到'slide'('image_name')VALUES('image / 29-07-2014-1406653546.jpg')== ---->中的

错误您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在第1行''slide'('image_name')VALUES('image / 29-07-2014-1406653546.jpg')附近使用正确的语法

如何解决? 这是我的代码:

<?php
include("config.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 = "image/".$imagename;
if(move_uploaded_file($temp_name, $target_path)) {
$query_upload="INSERT into 'slides' ('image_name') VALUES 
('$target_path')";
mysql_query($query_upload) or die("error in $query_upload == ----> ".mysql_error());  
}
else{
exit("Error While uploading image on the server");
} 
}
?>;

2 个答案:

答案 0 :(得分:3)

这是因为您在table and column identifiers周围使用了引号。

INSERT into 'slides' ('image_name')
            ^      ^  ^          ^

删除引号或用反引号替换它们。

旁注: 使用反引号``确保您使用{{3}可能(意外地或不知不觉地)或者,列名之间的空格或连字符,这是不鼓励的做法。

虽然情况并非如此(在您的代码中找不到保留字),但使用它们是偏好/个人品味的问题。

所以,就这样做:

INSERT into `slides` (`image_name`) ...

INSERT into slides (image_name) ...

两者都有效。


<强> 脚注:

您现有的代码向MySQL reserved word开放 请与SQL injection一起使用mysqli_* with prepared statementsPDO

答案 1 :(得分:1)

尝试:

$query_upload="INSERT into `slides` (`image_name`) VALUES ('$target_path')";

这是因为你想使用反向标记(`)来转义命名的列和表,以及值的单引号。