我正在为网站制作控制面板(管理页面)。所有页面都具有相同的代码,数据库表名称和列的更改很少。所有这些都工作正常,但一页不起作用。
这是它的代码......
<?php
include('connect.php');
// read the input data
$KTitle = $_POST['Title'];
$Kcontent = $_POST['content'];
$ImgName = $_FILES["file"]["name"];
//get img extension
$ImgExtension = substr($ImgName, (strlen($ImgName) - 4), strlen($ImgName));
//check if it Gif, Bng, Jpg
if ($ImgExtension == ".gif" || $ImgExtension == ".jpg" || $ImgExtension == ".png")
{ //get img name to rename it then readd the extinsion
$ImgName = substr($ImgName, 0, (strlen($ImgName) - 4));
$storyImgName = $ImgName . "_" . $Title;
$target = "../CharacterImgs/" . $storyImgName . $ImgExtension;
$target = str_replace(" ", "_", $target);
move_uploaded_file($_FILES['file']['tmp_name'], $target);
mysql_query("INSERT INTO CharactersN (name,desc,img) VALUES ('$KTitle', '$Kcontent','$target')");
echo "<meta http-equiv=\"refresh\" content=\"3;URL=AddCharacterForm.php\">";
}
?>
答案 0 :(得分:4)
如果您在MySQL中使用desc
作为列名,则必须将其包围在反引号中,因为它是reserved word。
"INSERT INTO CharactersN (name, `desc`, img) ..."
答案 1 :(得分:1)
你有问题:
INSERT INTO CharactersN (name,desc,img)
desc
是一个保留字,所以你必须使用那里的符号,就像这样:
INSERT INTO CharactersN (`name`,`desc`,`img`)
最好每次都将这种表示法用于字段名称(或者永远不要在数据库设计中对字段名称使用保留字)。
此外,请阅读SQL Injection,因为您的代码显示您不知道它。您正在查询中插入来自外部的值(在本例中为POST)。
VALUES ('$KTitle', '$Kcontent','$target')")
您应该先使用mysql_real_escape_string()
转义这些值,或者更好,使用PDO进行数据库交互。
来自xkcd