如何在JavaScript中更新多个值

如何在JavaScript中更新多个值,javascript,php,mysql,json,Javascript,Php,Mysql,Json,首先,我为我糟糕的英语感到抱歉 我正在为学校制作信息系统,在为学生更新数据时遇到问题。学生表单上有兄弟字段。他们可以添加一个或多个兄弟姐妹(一对多关系)。该程序已成功地将兄弟姐妹添加到数据库中(有两个数据库,即学生(id[自动递增-主键]、学生id姓名、性别、年龄等)和兄弟姐妹(id(主键)、学生id、兄弟姐妹姓名、兄弟姐妹年龄等) 但是,当我更新兄弟姐妹数据时,程序失败了 添加兄弟姐妹 php: 名称 年龄 js: 函数addRow(){ var table=document.getE

首先,我为我糟糕的英语感到抱歉

我正在为学校制作信息系统,在为学生更新数据时遇到问题。学生表单上有兄弟字段。他们可以添加一个或多个兄弟姐妹(一对多关系)。该程序已成功地将兄弟姐妹添加到数据库中(有两个数据库,即学生(id[自动递增-主键]、学生id姓名、性别、年龄等)和兄弟姐妹(id(主键)、学生id、兄弟姐妹姓名、兄弟姐妹年龄等)

但是,当我更新兄弟姐妹数据时,程序失败了

添加兄弟姐妹 php:



名称 年龄
js:


函数addRow(){
var table=document.getElementById(“siblingsTable”);
var rowCount=table.rows.length;
var row=table.insertRow(rowCount);
var cell1=行插入单元格(0);
var element1=document.createElement(“输入”);
element1.type=“text”;
element1.name=“兄弟姐妹_name[]”;
元素1.value=“”;
单元格1.附加子元素(元素1);
var cell2=行插入单元格(1);
var element2=document.createElement(“输入”);
element2.type=“text”;
element2.name=“兄弟姐妹年龄[]”;
element2.value=“”;
第2单元。附加子元素(元素2);
}
函数deleteRow(){
var table=document.getElementById(“siblingsTable”);
var rowCount=table.rows.length;
表.deleteRow(rowCount-1);
}
保存到数据库:

if (!empty($_POST['siblings_name']) && !empty($_POST['siblings_age']) && is_array($_POST['siblings_name']) && is_array($_POST['siblings_age']) && count($_POST['siblings_name']) === count($_POST['siblings_age'])) {
    $auth_array = $_POST['auth_key'];
    $name_array = $_POST['siblings_name'];
    $age_array = $_POST['siblings_age'];
        for ($i = 0; $i < count($name_array); $i++) {
            $auth = mysql_real_escape_string($auth_array);
            $name = mysql_real_escape_string($name_array[$i]);
            $age = mysql_real_escape_string($age_array[$i]);
            mysql_query("INSERT INTO skkk_web_siblings (auth_key, siblings_name, siblings_age) VALUES ('$auth', '$name', '$age')");
        }
    }
if(!empty($\u POST['sides\u name'])和&!empty($\u POST['sides\u age'])和is\u数组($\u POST['sides\u age'])和计数($\u POST['sides\u name'])==计数($\u POST['sides sides age'])){
$auth_array=$\u POST['auth_key'];
$name\u array=$\u POST['sibbines\u name'];
$age_array=$\u POST['sibles_age'];
对于($i=0;$i

当我想更新数据时,这是我的问题:

$sib = mysql_query("SELECT COUNT(auth_key) FROM skkk_web_siblings WHERE auth_key = '$_GET[id]'");
$totalsiblings = mysql_result($sib,0);
...
$siblings = mysql_query("SELECT * FROM skkk_web_siblings WHERE auth_key = '$_GET[id]'");
            while($row = mysql_fetch_array($siblings)){
                $id = $row['id'];
                $name = $row['siblings_name'];
                $age = $row['siblings_age'];
                $siblingsname[] = $name;
                $siblingsage[] = $age;
            }
...
...
...
<table id='siblingsTable'>
                    <a href='javascript:void(0);' onclick='editRow()'><img src='../images/edit.png'/></a><br />
                    <th>Name</th>
                    <th>Age</th>
</table>
...
<script>
    function editRow() {
        var table       = document.getElementById("siblingsTable");

        var total   = '<?php echo $totalsiblings; ?>';
        var name    = jQuery.parseJSON('<?php echo json_encode($siblingsname); ?>');
        var age = jQuery.parseJSON('<?php echo json_encode($siblingsage); ?>');
        var i;
        var table = '';
        for (i = 0; i < total; i++) {
            tbl += '<input type="text" name="siblings_name[]" value="' + name[i] + '"/>';
            tbl += '<input type="text" name="siblings_age[]" value="' + age[i] + '"/>';
        }
        document.getElementById("siblingsTable").innerHTML = table;
    }
</script>
...
//updating to database
if (!empty($_POST['siblings_name']) && !empty($_POST['siblings_age']) && is_array($_POST['siblings_name']) && is_array($_POST['siblings_age']) && count($_POST['siblings_name']) === count($_POST['siblings_age'])) {
            $name_array = $_POST['siblings_name'];
            $age_array = $_POST['siblings_age'];
            for ($i = 0; $i < count($name_array); $i++) {
                $name = mysql_real_escape_string($name_array[$i]);
                $age = mysql_real_escape_string($age_array[$i]);
                mysql_query("UPDATE skkk_web_siblings SET siblings_name = '$name', siblings_age = '$age' WHERE auth_key = '$_POST[id]'");
            }
        }
$sib=mysql\u查询(“从skkk\u web\u同级中选择COUNT(auth\u key),其中auth\u key='$\u GET[id]'”;
$totalsibbins=mysql\u结果($sib,0);
...
$SIBLINES=mysql\u查询(“从skkk\u web\u SIBLINES中选择*,其中auth\u key='$\u GET[id]'”;
while($row=mysql\u fetch\u数组($sides)){
$id=$row['id'];
$name=$row['sides_name'];
$age=$row['SIBLINES_age'];
$siblingsname[]=$name;
$siblingsage[]=$age;
}
...
...
...

名称 年龄 ... 函数editRow(){ var table=document.getElementById(“siblingsTable”); var总计=“”; var name=jQuery.parseJSON(“”); var age=jQuery.parseJSON(“”); var i; var表=“”; 对于(i=0;i
当我更新一个名字时,它会改变所有兄弟姐妹的名字。我应该怎么做


谢谢您的帮助。

您应该使用
同级.id
,并在
更新中使用它,而不是
身份验证密钥
,因为
身份验证密钥
不是唯一的,因此它将更新多行。您可以使用
同级.id
作为数组密钥,即
name=“sibles\u name[{$id}”
,然后可以在
UPDATE
查询中使用它。您应该使用
同级.id
,并在
UPDATE
中使用它,而不是
auth_键
,因为
auth_键
不是唯一的,所以它将更新多行。您可以使用
同级.id
作为数组键,即
名称=“兄弟姐妹名称[{$id}]”
,然后可以在
更新查询中使用。
if (!empty($_POST['siblings_name']) && !empty($_POST['siblings_age']) && is_array($_POST['siblings_name']) && is_array($_POST['siblings_age']) && count($_POST['siblings_name']) === count($_POST['siblings_age'])) {
    $auth_array = $_POST['auth_key'];
    $name_array = $_POST['siblings_name'];
    $age_array = $_POST['siblings_age'];
        for ($i = 0; $i < count($name_array); $i++) {
            $auth = mysql_real_escape_string($auth_array);
            $name = mysql_real_escape_string($name_array[$i]);
            $age = mysql_real_escape_string($age_array[$i]);
            mysql_query("INSERT INTO skkk_web_siblings (auth_key, siblings_name, siblings_age) VALUES ('$auth', '$name', '$age')");
        }
    }
$sib = mysql_query("SELECT COUNT(auth_key) FROM skkk_web_siblings WHERE auth_key = '$_GET[id]'");
$totalsiblings = mysql_result($sib,0);
...
$siblings = mysql_query("SELECT * FROM skkk_web_siblings WHERE auth_key = '$_GET[id]'");
            while($row = mysql_fetch_array($siblings)){
                $id = $row['id'];
                $name = $row['siblings_name'];
                $age = $row['siblings_age'];
                $siblingsname[] = $name;
                $siblingsage[] = $age;
            }
...
...
...
<table id='siblingsTable'>
                    <a href='javascript:void(0);' onclick='editRow()'><img src='../images/edit.png'/></a><br />
                    <th>Name</th>
                    <th>Age</th>
</table>
...
<script>
    function editRow() {
        var table       = document.getElementById("siblingsTable");

        var total   = '<?php echo $totalsiblings; ?>';
        var name    = jQuery.parseJSON('<?php echo json_encode($siblingsname); ?>');
        var age = jQuery.parseJSON('<?php echo json_encode($siblingsage); ?>');
        var i;
        var table = '';
        for (i = 0; i < total; i++) {
            tbl += '<input type="text" name="siblings_name[]" value="' + name[i] + '"/>';
            tbl += '<input type="text" name="siblings_age[]" value="' + age[i] + '"/>';
        }
        document.getElementById("siblingsTable").innerHTML = table;
    }
</script>
...
//updating to database
if (!empty($_POST['siblings_name']) && !empty($_POST['siblings_age']) && is_array($_POST['siblings_name']) && is_array($_POST['siblings_age']) && count($_POST['siblings_name']) === count($_POST['siblings_age'])) {
            $name_array = $_POST['siblings_name'];
            $age_array = $_POST['siblings_age'];
            for ($i = 0; $i < count($name_array); $i++) {
                $name = mysql_real_escape_string($name_array[$i]);
                $age = mysql_real_escape_string($age_array[$i]);
                mysql_query("UPDATE skkk_web_siblings SET siblings_name = '$name', siblings_age = '$age' WHERE auth_key = '$_POST[id]'");
            }
        }