【问题标题】:PHP Store unknown array length into databasePHP将未知数组长度存储到数据库中
【发布时间】:2016-07-17 12:00:00
【问题描述】:

所以我有一个表单,可以让人们添加成绩列表,并且使用 jQuery,他们最多可以添加 9 个额外字段。 (这意味着他们可以提交从 1 到 10 等级的任何数字)。我想知道的是如何将其存储在我的数据库中,因为我不想将它们全部转换为一个字符串。我担心的是,因为我不知道用户要输入多少成绩,所以我无法设置一个确定的数组编号来存储(或者我可以吗?)

抱歉,如果解释得不好,我对 PHP 和 SQL 还是比较陌生!

【问题讨论】:

  • 正如目前所写的,不清楚你在问什么。您能否添加更多您当前拥有的信息(表单、php 脚本、数据库方案、表关系...)?
  • 成绩应该是一个链接到每个成绩所有者的表。您可以根据需要在成绩表中包含任意数量的行,其中包含三列 - 学生标识符、课程和成绩。
  • 所以我有一个与 CV 表相关的“成绩”表,而 CV 表与用户表相关。意味着一份简历/简历中的多个等级,以及一个用户的许多简历/简历。例如,他们目前将数学、A、GCSE 等内容作为一个条目上传,将英语、A*、A Level 作为另一个条目。

标签: php html arrays database mysqli


【解决方案1】:

如果我没记错的话,一个快速的假设是:可以像这样为一个用户保存多个科目的多个成绩。

首先,我们从表单中获取一个用户 ID 并将其放入 PHP:

$id = isset($_POST['id'])? $_POST['id']:'';

然后获取多个成绩和科目,它们将以逗号分隔值发送:

//$id= explode(',',$_POST['id']);// For multiple users
$grade= explode(',',$_POST['grade']);
$subj= explode(',',$_POST['subject']);
$entry= explode(',',$_POST['entry']);

现在统计成绩:$count= count($grade);

使用for loop 中的计数来插入循环:

for ($i = 0; $i < $count; $i++) {
   try {
        $dbh->beginTransaction();   //$dbh is your PDO connection               
            $insertQ = "INSERT INTO `grades` (id, grade, subject, entry) 
                        VALUES('$id', '$grade[$i]', '$subj[$i]','$entry[$i])";             
            $dbh->query($insertQ);              
            $dbh->commit();
            } catch (Exception $e) {
                $error = $e->getMessage();

            }
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 2012-07-19
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    相关资源
    最近更新 更多