无法插入INTO表

SHi*_*Hiv -1 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);
Run Code Online (Sandbox Code Playgroud)

只有特定值才会传递给帖子.所以代码不工作建议一些方法来解决它

Jon*_*hop 11

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

$_POST['ugDept']
Run Code Online (Sandbox Code Playgroud)

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

define('ugDept', 'someValueHere');
Run Code Online (Sandbox Code Playgroud)

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

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

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

这将向您报告SQL错误.请注意,die在生产环境中,不一定是最好的事情; 但在发展中,它完成了这项工作.