无法插入INTO表

时间:2012-08-22 12:41:51

标签: php mysql

  

使用未定义的常量ugDept - 假设'ugDept'

当我尝试执行以下代码时出现此错误

$_10thPercentage=number_format($_POST['tenthPercentage'], 2, '.', ' ');
$query="
INSERT INTO academic 
    VALUES (
        '".$_SESSION['roll']."', 
        '".$_POST[tenthMedium]."',
        ".$_10thPercentage.",
        '".$_POST[twelthStudiedStatus]."',
        ".$_10thPercentage.",
        '".$_POST[techStudiedStatus]."',
        '".$_POST[techDept]."',
        '".$_POST[techPercentage]."',
        '".$_POST[appStudiedStatus]."',
        '".$_POST[appDept]."',
        '".$_POST[appPercentage]."',
        '".$_POST[ugStudiedStatus]."',
        '".$_POST[ugDept]."',
        '".$_POST[ugCgpa]."',
        '".$_POST[pgStudiedStatus]."',
        '".$_POST[pgDept]."',
        '".$_POST[pgCgpa]."')";

mysql_query($query);

只会将某个值传递给帖子。所以代码不起作用建议某种方法来解决它

4 个答案:

答案 0 :(得分:11)

您可能需要更改所有$ _POST变量以使用引号(如果您不使用常量)。像这样:

$_POST['ugDept']

否则,PHP会查找名为 ugDept 的常量值,该值可能不存在。如果使用常量,请确保已正确定义。你可以这样做:

define('ugDept', 'someValueHere');

此外,正如其他人所建议的,您需要清理您的输入您应该使用the Mysqli extension,而不是mysql_* 。就像现在一样,您的数据库存在SQL注入的风险,这很糟糕。

更新:要确保您的mysql_query来电成功与否,请执行以下操作:

$result = mysql_query('{YOUR QUERY HERE}');
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

这将向您报告SQL错误。请注意,die不一定是生产环境中最好的事情;但在发展中,它确实起到了作用。

答案 1 :(得分:1)

还要考虑清理你的输入。

答案 2 :(得分:0)

这意味着您的constact ugDept未定义。只需像您必须完成的那样定义它,例如tenthMedium

答案 3 :(得分:0)

$ _ 10thPercentage不是来自post数组,应该是吗?此表的create语句也很有用。