Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql数据库/php中的模式值_Php_Sql - Fatal编程技术网

sql数据库/php中的模式值

sql数据库/php中的模式值,php,sql,Php,Sql,我正在研究这个小的注册系统,我有一个问题,如果我想在我的系统中注册学生,那么year/lvl的值应该只会增加,例如,一旦注册,一年级将是二年级,而不会减少到预科,也不会增加到三年级的两倍。到目前为止,我的数据输入完全是插入varchar。如果您能为我提供任何帮助,我将不胜感激。我的数据库应该是什么样子的。谢谢。我不建议您在真正指数字的地方使用varchars。这让一些事情变得容易多了 mysql> create table studentLevels(id int(3) primary k

我正在研究这个小的注册系统,我有一个问题,如果我想在我的系统中注册学生,那么year/lvl的值应该只会增加,例如,一旦注册,一年级将是二年级,而不会减少到预科,也不会增加到三年级的两倍。到目前为止,我的数据输入完全是插入varchar。如果您能为我提供任何帮助,我将不胜感激。我的数据库应该是什么样子的。谢谢。

我不建议您在真正指数字的地方使用varchars。这让一些事情变得容易多了

mysql> create table studentLevels(id int(3) primary key auto_increment, name varchar(100));
Query OK, 0 rows affected (0.02 sec)

mysql> desc studentLevels;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(3)       | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> create table studentEnrolled (studentID int(3),subjectID int(3), grade int(3));
Query OK, 0 rows affected (0.00 sec)

mysql> desc studentEnrolled;
+-----------+--------+------+-----+---------+-------+
| Field     | Type   | Null | Key | Default | Extra |
+-----------+--------+------+-----+---------+-------+
| studentID | int(3) | YES  |     | NULL    |       |
| subjectID | int(3) | YES  |     | NULL    |       |
| grade     | int(3) | YES  |     | NULL    |       |
+-----------+--------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> create table subjects (id int(3), subGrade int(3));
Query OK, 0 rows affected (0.05 sec)

mysql> desc subjects;
+----------+--------+------+-----+---------+-------+
| Field    | Type   | Null | Key | Default | Extra |
+----------+--------+------+-----+---------+-------+
| id       | int(3) | YES  |     | NULL    |       |
| subGrade | int(3) | YES  |     | NULL    |       |
+----------+--------+------+-----+---------+-------+
2 rows in set (0.00 sec)
现在,有了这个结构,您就有了一个表来很好地标识您的学生,您可以根据需要在这里使用主键做很多事情(将主键链接到其他表,稍后添加您不知道需要的功能,并且数据被规范化)。您有一个整洁的表格,它定义了学生注册的内容-链接回学生。最后,您还有另一个简洁的表格,其中包含主题信息

查看用于查看学生所在位置的
成绩
列,您可以使用以下选项之一:

学生完成课程后,您可以如下方式更新成绩:

update 
    studentEnrolled a, 
    subjects b 
set 
    a.grade=b.subGrade 
where 
    a.subjectID=b.id 
    and a.studentID=:ID
上面将使用应用程序中的绑定参数,代码将简单地将学生成绩更新为刚刚通过的科目

如果您希望学生能够回去学习成绩较低的课程,但不希望他们的“成绩”下降,您可以轻松地将上述内容修改为:

update 
    studentEnrolled a, 
    subjects b 
set 
    a.grade=b.subGrade 
where 
    a.subjectID=b.id 
    and a.grade<subGrade 
    and a.studentID=:ID
更新
学生们打了一个电话,
受试者b
设置
a、 等级=b级路基
哪里
a、 主体id=b.id

答:谢谢你,我脑子里也有数字。