我正在使用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.';
}
答案 0 :(得分:2)
因为INSERT
语句的值是用反引号包装的。它应该是单引号。反引号是标识符,单引号是字符串。
mysql_query("INSERT INTO `images-table` (`file-name`, `file-type`)
VALUES ('". $filename . "', '" . $type . "')");
作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection
攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements
,您可以摆脱在值周围使用单引号。
其他