如何将数组输入存储到数据库中? MYSQL PHP表单输入foreach

时间:2014-07-14 14:34:30

标签: php html mysql css arrays

在这个项目中,我正在为老师制作一个考勤用户界面。在这里,教师可以更新学生的标记,这些标记将直接更新到MYSQL数据库中。下面显示了我用来回显数据库中学生列表的代码。在这里,我使用了数组,即name =" gradeEdit []"在输入部分。

teacherGrades.php

<?php
$con=mysqli_connect("#", "#", "", "#");
if (mysqli_connect_errno())
 {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }

$result = mysqli_query ($con,"SELECT ");
echo ' <form method="POST" action="teacherGrades.php"> 
  <table class="tableEchoPupil" border="1">
<tr>
<th>Name</th>
<th>Edit</th>
</tr>';

while($row = mysqli_fetch_array($result))

{
echo "<tr>
<td>" . $row['name'] . "</td>
<td> <input type='text' name='gradeEdit[]' /> </td> 
</tr>"; }

echo "<input class='gradeSubmit' type='submit' name='btnSubmit' value='Submit'>"; 
echo "</table>"; 
echo "</form> <br/>"; 
 ?>

下面显示了存储在本页开头的代码[teacherGrades.php ]。当教师输入新成绩并单击上一代码中的提交按钮时,必须在数据库中更新成绩。但问题是,我无法正确更新它。我认为我的代码背后有一些问题,请你检查并帮助我。如果还有其他问题,我准备回答。

提前谢谢你。

 <?php 
 $con=mysqli_connect("#","#","","#");
 if (mysqli_connect_errno()) {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }
 if ($_POST['btnSubmit']){

 $gradeEdit = $_POST['gradeEdit']; 

    foreach ($gradeEdit as $key => $value) {

      $grades = implode(',', $gradeEdit);

      $query = "UPDATE classroom_student_teacher SET marks = '$grades'
 WHERE teacher_id = $userid AND classroom_id = $id";

  $close = mysqli_query($con, $query); 
  }
  }
   ?> 

3 个答案:

答案 0 :(得分:1)

您应该在输入框中传递学生姓名或ID。这意味着row-1_key =&gt;行1_value。

<input type='text' name='gradeEdit[".$row['student_id']."]' />

以上行是用于表单输入。 告诉我您是否正在为教师或所有学生更新数据。说明我的表结构。

如果要保存数组值。使用以下行

foreach ($gradeEdit as $key => $value) {

//use $key as row id and marks will be your $value. So change your query like this below.

$row_id=$key+1;
$query = "UPDATE classroom_student_teacher SET marks = '$value'
WHERE student_id=$row_id AND teacher_id = $userid AND classroom_id = $id";

AND teacher_id = $ userid AND classroom_id = $ id 您使用此条件的原因

$close = mysqli_query($con, $query); 
}

答案 1 :(得分:0)

2种方法,

json_encode是可能的,但它可能以不同的方式解码。

对我来说听起来更好的一个选项是使用序列化和反序列化,这将返回对象,就像你放置它们一样。

e.g。

serialize($var);
unserialize($var);

它只会生成数组或对象的序列化字符串。 在你的情况下,JSON也可以。

http://php.net/manual/en/function.serialize.php

答案 2 :(得分:0)

要在您的数据库中存储数据,您可以使用php自己的函数。

$conn=mysqli_connect("example.com","testuser","passwort","your_db");
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "INSERT INTO Your_Table (First, Second, Array)";
$sql .= VALUES ('First', 'Second',Your_Array)";
mysqli_query($conn, $sql);
mysqli_close($con);

要将数组放入数据库,您可以使用php函数implode。

$array = array('First', 'Second', 'Last');
$comma_separated = implode(",", $array);

你会给你一个像这样的字符串 - 第一,第二,最后