SQL语法错误(服务器版本:5.6.17 - MySQL)

时间:2016-04-07 17:28:00

标签: php mysql sql mysql-error-1064


你能告诉我这段代码缺少什么吗?因为我得到SQL语法错误。

我创建了三个列的表。 ID是自动控制的,Image是Blob数据类型

因为我认为插入$ image时出现问题

这是错误------->> “您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以便在' #〜 I 27W 附近使用正确的语法?Hl : o : ӏvm5V Ό '`V '在第1行“

 <?php

if (isset($_POST["Upload"]))
 {
    include("DbConnection.php");

        $file  = $_FILES['image']['tmp_name'];


        if(!isset($file)) {
            echo 'Please Select a File';
        }
        else {
            $image     = file_get_contents($_FILES['image']['tmp_name']);
            $img_name  = $_FILES['image']['name'];
            $img_size  = getimagesize($_FILES['image']['tmp_name']);

            if ($img_size == false) 
                        {
                echo 'it is not a image'; 
                        }

        else 
        {
            $query  = mysqli_query($Con, "INSERT INTO `cars_tbl` (ID,Name,Image) VALUES ('','$img_name','$image')");
                if (!$query)
                {
                    echo 'Error Executing Query '.mysqli_error($Con);  
                    }
                    else 
                    {
                        $last_ID = mysqli_insert_id($Con);
                        echo "Image Uploaded. <p /> Your Image : <p /> <img src='get.php?ID=".$last_ID."'" ;
                        }


             }

                        } //else 
} // 1st IF

else
{
    echo 'Fill the details';
}
?> 

3 个答案:

答案 0 :(得分:1)

您忘记将$img_name包裹在&#39;

$query = mysqli_query($Con, "INSERT INTO `cars_tbl` (ID, Name, Image) VALUES ('', '$img_name', '$image')");

答案 1 :(得分:1)

问题是你明显将blob保存到数据库中,而没有转义它。

您必须意识到命令中发生了什么:图像数据 - 也可能包含'因为它是二进制文件 - 使您的SQL命令无效。

如何保存它的正确方法:

1)

使用预先准备好的陈述

2)

mysqli_query($Con, "INSERT INTO `cars_tbl` (ID, Name, Image)
   VALUES ('', '$img_name', '".mysqli_escape_string($image)."')");

我更喜欢准备好的陈述。另一个问题是为什么将ID设置为空字符串。

答案 2 :(得分:0)

您正在尝试将值'$ img_name'插入名称而不是img_name内容。请尝试以下方法:

 $query  = mysqli_query($Con, "INSERT INTO `cars_tbl` (ID,Name,Image) VALUES ('','" . $img_name . "','" . $image . "')");