两个表用于一个带有公共字段的php / MySQL表单?

时间:2014-09-06 07:01:30

标签: php sql forms mysqli

我的表单上有学生证,电子邮件和姓名......以及复选框

我设法将studentid和checkboxes存储在一个表中,并创建了一个新表来存储与学生ID相关的所有其他信息

表1 studentid ----- checkboxselections ....

表2 studentid ----- email ---- name

我必须插入查询,一个用于studentid和复选框,一个用于(表2)

$sql="INSERT INTO courses (studentid, ckb)
    VALUES ('$studentid', '$cc')";

    $sql2="INSERT INTO studentinfo (studentid, email, name)
    VALUES ('$studentid', '$email', $fname)";

$ sql2无法存储数据但是$ sql存储数据就好了,我该如何解决这个问题?

这里是完整的代码

    $studentid = mysqli_real_escape_string($dbcon, $_GET['studentid']); //echo $studentid;
        $email = $dbcon->real_escape_string($_GET['email']);
        $fname = $dbcon->real_escape_string($_GET['fname']);

$name = $_GET['ckb'];
if(isset($_GET['ckb'])) //checkboxes
{
foreach ($name as $courcess){
$cc=$cc. $courcess.',';
}
}


    $sql="INSERT INTO courses (studentid, ckb)
    VALUES ('$studentid', '$cc')";

        $sql2="INSERT INTO studentinfo (studentid, email, name)
    VALUES ('$studentid', '$email', $fname)";


    if (!mysqli_query($dbcon,$sql)) {
    die('Error: ' . mysqli_error($dbcon));
}
echo "  Thank you for using IME Virtual Registeration  ";   
        mysqli_close($dbcon);
?>

我的表单方法是GET

3 个答案:

答案 0 :(得分:2)

我建议你使用prepare语句和事务代替mysqli查询。

您忘记了第二个查询的mysqli_query:

 $sql="INSERT INTO courses (studentid, ckb)
VALUES ('{$studentid}', '{$cc}')";

    $sql2="INSERT INTO studentinfo (studentid, email, name)
VALUES ('{$studentid}', '{$email}', '{$fname}')";


    if (!mysqli_query($dbcon,$sql)) {
     die('Error: ' . mysqli_error($dbcon));
     }

    if (!mysqli_query($dbcon,$sql2)) {
     die('Error: ' . mysqli_error($dbcon));
    }
 echo "  Thank you for using IME Virtual Registeration  ";   
    mysqli_close($dbcon);
?>

这是使用prepare语句的示例,您不需要使用real_escape_string"

$stmt = $mysqli->prepare("INSERT INTO courses VALUES (?, ?)");  
$stmt->bind_param('ds', $studentid, $cc);
$stmt->execute();


$stmt = $mysqli->prepare("INSERT INTO studentinfo VALUES (?, ?, ?)");  
$stmt->bind_param('dss', $studentid, $email, $fname);
$stmt->execute();

答案 1 :(得分:0)

请试试这个

if (!mysqli_query($dbcon,$sql)) { die('Error: ' . mysqli_error($dbcon)); } else { if (!mysqli_query($dbcon,$sql2)) { die('Error: ' . mysqli_error($dbcon)); } else { echo " Thank you for using IME Virtual Registeration "; } } mysqli_close($dbcon);

答案 2 :(得分:0)

 if (!mysqli_query($dbcon,$sql)) 
 {
    die('Error: ' . mysqli_error($dbcon));
 }
 else
 {

    if (!mysqli_query($dbcon,$sql2)) {
      die('Error: ' . mysqli_error($dbcon));
    }
}

Hope it will help.....