MySQL Query在文件检索期间不执行

时间:2013-02-01 14:40:37

标签: php mysql sql mysql-error-1054

我正在使用PHP创建一个接受文件的服务,然后将信息输入MySQL数据库。我没有生成任何错误(至少不在目录error_log中)。文件上传很好,但是信息没有输入到数据库中,正如我所说的那样,我没有看到列出的错误,很可能是,而且我不确定在哪里看。

include("connect.php");
$type = "jpg";

foreach ($_GET as $key => $value) { eval("\$" . $key . " = \"" . $value . "\";");}  
$filename = isset($_REQUEST["filename"]) ? $_REQUEST["filename"] : "jjj";  
$append = $_REQUEST["append"];
if($code == "XXX")  
{  
    try  
        {       
            mysql_query("INSERT INTO `images-table` (`file-name`, `file-type`) VALUES (`". $filename . "`, `" . $type . "`)");

            if(!$append)  
                $file = fopen("uploads/" . $filename,"w");  
            else  
                $file = fopen("uploads/" . $filename,"a");  

            $input = file_get_contents ("php://input");  
            fwrite($file,$input);  
            fclose($file);  

    echo "OK";

        }  
    catch (Exception $e)   
        {  
            echo 'Caught exception: ',  $e->getMessage(), "\n";  
        }  
}
else
{
echo 'You do not have permission to do this.';
}

1 个答案:

答案 0 :(得分:2)

因为INSERT语句的值是用反引号包装的。它应该是单引号。反引号是标识符,单引号是字符串。

mysql_query("INSERT INTO `images-table` (`file-name`, `file-type`) 
             VALUES ('". $filename . "', '" . $type . "')");

作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

其他