【问题标题】:Two tables for one php/MySQL form with a common field?一个具有公共字段的 php/MySQL 表单的两个表?
【发布时间】:2014-10-31 02:35:53
【问题描述】:

我的表格有一个学生证、电子邮件和姓名...以及复选框

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

表 1 studentid ----- 复选框选择....

表 2 学生号 -----邮箱 ---- 姓名

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

$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

【问题讨论】:

  • 你在哪里运行 $sql2? mysqli_query($dbcon,$sql2)

标签: php sql forms mysqli


【解决方案1】:

我建议您使用准备语句和事务而不是 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();

【讨论】:

  • 谢谢,我猜这是问题的一部分……现在我确定它与正确定义 $email $fname 错误:“字段列表”中的未知列“myname”有关
  • $fname 查询,我将其重新定义为 $fname = mysqli_real_escape_string($dbcon, $_POST['name']);现在一切都很好,但是只有学生ID被存储在第二个表中,姓名和电子邮件没有
  • $sql2="INSERT INTO studentinfo (studentid, email, name) VALUES (".$studentid .", ".$email .", ".$fname .")";
  • 我知道你回答得很好,但你知道为什么在替换 $sql2 或尝试修复语法后我的服务器“丢失”页面,找不到 404....如果我改变$sql2 中的一个点会丢失页面:/
  • 究竟是什么点?我需要看一个例子
【解决方案2】:

请试试这个

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);

【讨论】:

    【解决方案3】:
     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.....
    

    【讨论】:

      猜你喜欢
      • 2015-10-06
      • 2020-12-17
      • 2016-04-29
      • 1970-01-01
      • 2010-11-14
      • 2010-11-25
      • 2013-11-26
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多