将记录添加到数据库的php代码

时间:2011-11-24 18:52:44

标签: php mysql

我正在为网站制作控制面板(管理页面)。所有页面都具有相同的代码,数据库表名称和列的更改很少。所有这些都工作正常,但一页不起作用。

这是它的代码......

<?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\">";
}
?>

2 个答案:

答案 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进行数据库交互。

enter image description here 来自xkcd