在一个有两个外键的表中插入数据(php)

时间:2014-03-11 12:22:22

标签: php mysql database insert foreign-keys

我是这个网站的新手,我的记录系统需要一些帮助。我需要将学生的成绩插入成绩表,其中包含以下列: gradeid (PK,auto_increment), studentid (FK ), courseid (FK), midterm endterm final remark

studentid (FK)从 addrec 表的studentid(PK)中获取数字。

courseid (FK)从课程表的courseid(PK)中获取数字。

以下是我实验过的代码(无数次),但仍然没有结果:

<?php
$host="localhost";  
$username="root"; 
$password=""; 
$db_name="studentrec";


$studentid = $_GET['id'];
$sql1="SELECT studentid FROM addrec WHERE studentid='$studentid'";

if(mysql_query($sql1))
{
$courseid = $_GET['courseid'];
$sql2 = "SELECT courseid FROM course WHERE courseid='$courseid'";

if (mysql_query ($sql2)) 
{
$sql3="INSERT INTO grades(`studentid`, `courseid`, `midterm`, `endterm`, `final`,    remark`) VALUES   ('$studentid','$courseid','$_POST[midterm]','$_POST[endterm]','$_POST[final]','$_POST[remark]' )";
}
if (mysql_query($sql3))
{
    // Success
}
else 
{
    die('Error on query 2: ' . mysql_error($con));
}
}
?>

每次点击“提交”按钮都没有错误,但我放在文本框中的数据不会插入成绩表中。请帮忙?还是建议?我还在研究关于PHP的东西。谢谢。 :)

4 个答案:

答案 0 :(得分:0)

你没有连接到mySQL:http://www.php.net/manual/en/function.mysql-connect.php

你也可能会注意到php.net上的大红色框,你应该转移到PDO或MySQLi。

答案 1 :(得分:0)

查询包含错误。试试这个

INSERT INTO grades(studentid,courseid,midterm,endterm,final,remark) VALUES  ('$studentid','$courseid','$_POST[midterm]','$_POST[endterm]','$_POST[final]','$_POST[remark]' );

答案 2 :(得分:0)

首先执行数据库连接,然后选择db而不是

尝试替换

$sql3="INSERT INTO grades(`studentid`, `courseid`, `midterm`, `endterm`, `final`,    remark`) VALUES   ('$studentid','$courseid','$_POST[midterm]','$_POST[endterm]','$_POST[final]','$_POST[remark]' )";

$sql3="INSERT INTO grades(`studentid`, `courseid`, `midterm`, `endterm`, `final`,    remark`) VALUES('$studentid','$courseid','".$_POST['midterm']."','".$_POST['endterm']."','".$_POST['final']."','".$_POST['remark']."' )";

答案 3 :(得分:0)

您的实际查询就像

INSERT INTO grades(`studentid`, `courseid`, `midterm`, `endterm`, `final`,remark`) 
VALUES
('$studentid','$courseid','$_POST[midterm]','$_POST[endterm]','$_POST[final]','$_POST[remark]' );

您需要在列备注之前放置`(tild),因此您的查询将如下所示

INSERT INTO grades(`studentid`, `courseid`, `midterm`, `endterm`, `final`,`remark`) 
VALUES
('$studentid','$courseid','$_POST[midterm]','$_POST[endterm]','$_POST[final]','$_POST[remark]');