限制数据在数据库行上插入

时间:2012-09-06 13:51:16

标签: php sql

你好,目前我正在使用这行代码:

    if( $get_display->level== "Nursery"){
        $lbl="Kinder";
        }
    else if( $get_display->level== "Kinder"){
        $lbl="Preparatory";
        }
    else if( $get_display->level== "Preparatory"){
        $lbl="Grade 1";
        }
    else if( $get_display->level== "Grade 1"){
        $lbl="Grade 2";
        }
     ******THE else if goes on but still the same*****

所以我打算根据学生成绩自动选择一个部分,我打算将此代码放在上面的每个if语句中。像这样:

    else if( $get_display->level== "Grade 1"){
        $lbl="Grade 2";
                 if($get_display->gpa => "88"){ 
       $result = mysql_query("SELECT * FROM tbl_section where level='$lbl' 
       and section_name="A"");
       $row = mysql_fetch_array($result);
               $sname = $row['section_name'];
               }else if($get_display->gpa => "80"){ 
       $result = mysql_query("SELECT * FROM tbl_section where level='$lbl' 
       and section_name="B"");
       $row = mysql_fetch_array($result);
               $sname = $row['section_name'];
       }else if($get_display->gpa => "75"){ 
       $result = mysql_query("SELECT * FROM tbl_section where level='$lbl' 
       and section_name="C"");
       $row = mysql_fetch_array($result);
               $sname = $row['section_name'];                        
                    }
        }

此处将使用 $ sname

    <input type="text"  name="levele" value="<?php echo $sname;?>">

我现在的主要问题是如果部分已满,它会自动插入部分b 对吗?我应该怎么做呢?我应该在 tbl_section 中添加一个字段来计算所在的学生?如果我会篡改我的数据库它应该怎么样?会感激任何帮助。 (请不要提到我的数据库非常妥协,已经知道只是一个简单的项目,但我稍后会实现mysql_real_escape_string(),还没有关于mysqli的知识。)

编辑: a和b 部分只是我的数据库中的字段名称,这是 tbl_section 的样子。

     section_id (int)
     section_name(vchar)(default names are A,B,C and cannot be changed)
     sy (school year) 
     adviser_id
     level

抱歉第一次在这里展示我的数据库希望这是正确的。

1 个答案:

答案 0 :(得分:1)

我只会SELECT section_name未满:

SELECT section_name, COUNT(*) 
FROM tbl_section 
WHERE level='$lbl' 
GROUP BY section_name
HAVING COUNT(*) < 80 
LIMIT 1

您还需要停止使用mysql_函数,因为它们being deprecated并且易受SQL注入攻击。

另外,我会重写上面的代码片段来压缩代码,如下所示:

elseif( $get_display->level== "Grade 1" ) {
    $lbl="Grade 2";

    if( $get_display->gpa => "88" ) {
        $section_name = 'A';
    }
    elseif( $get_display->gpa => "80" ) {
        $section_name = 'B';
    }
    elseif( $get_display->gpa => "75" ) {
        $section_name = 'C';                      
    }

    $result = mysql_query("SELECT * FROM tbl_section where level='$lbl' and section_name='$section_name' LIMIT 1");
    $row = mysql_fetch_array($result);
    $sname = $row['section_name'];  
}