Javascript Ajax在php while循环中更新表单中的第一行

Javascript Ajax在php while循环中更新表单中的第一行,javascript,php,jquery,Javascript,Php,Jquery,我有一个PHP while循环。在我的while循环中,我有一个HTML表单。我正在通过ajax将表单值处理到我的PHP中,然后PHP在我的数据库中更新这些值。问题是,每当我提交表单时,它只会更新表中的第一行。我还通过表单将唯一Id传递到ajax中,但由于某些原因,只有第一行会不断更新 我的Php代码: <?php $data = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($data as $row) { ?><form>

我有一个PHP while循环。在我的while循环中,我有一个HTML表单。我正在通过ajax将表单值处理到我的PHP中,然后PHP在我的数据库中更新这些值。问题是,每当我提交表单时,它只会更新表中的第一行。我还通过表单将唯一Id传递到ajax中,但由于某些原因,只有第一行会不断更新

我的Php代码:

<?php
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $row) { ?><form>
    <input type="text" name="id" value="<?php echo $row['no'] ?>"><br>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio" value="NO">NO
            <input type="radio" name="optradio" value="YES">YES
        </div>
    </fieldset>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio1" value="NO">NO
            <input type="radio" name="optradio1" value="YES">YES
        </div>
    </fieldset>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio2" value="NO">NO
            <input type="radio" name="optradio2" value="YES">YES
        </div>
    </fieldset>
    <button type="submit" value="Submit" class="btn">SUBMIT</button>
</form><?php }
我的PHP SQL查询

 <?php

include 'common.php';

$id = filter_input(INPUT_POST, "id", FILTER_SANITIZE_NUMBER_INT);
$question = filter_input(INPUT_POST, "optradio", FILTER_SANITIZE_STRING);
$question1 = filter_input(INPUT_POST, "optradio1", FILTER_SANITIZE_STRING);
$question2 = filter_input(INPUT_POST, "optradio2", FILTER_SANITIZE_STRING);


function getMark($answer, $mark = 1){ 
    $result = 0;
    if($answer == 'YES'){
        $result = $mark;
    }
    return $result;
}

    $p = 0;
    $p += getMark($question, 1); 
    $p += getMark($question1, .5);
    $p += getMark($question2, 2);


$command1 = "UPDATE rating SET marks = marks + '$c', marks= marks/ totalNumber WHERE no = '$id'";

 // prepare and executing
$stmt1 = $dbh->prepare($command1);
$result = $stmt1->execute();

?>

您使用的是PDO,但您的while循环似乎使用的是mysqli方法,如果您选择了多行,则使用
fetchAll
,更新代码如下:

$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $row) {
    $id = $row['no'];
}
更新:如果您想要多个表单,每行一个表单,您必须这样做:

<?php
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $row) { ?><form>
    <input type="text" name="id" value="<?php echo $row['no'] ?>"><br>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio" value="NO">NO
            <input type="radio" name="optradio" value="YES">YES
        </div>
    </fieldset>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio1" value="NO">NO
            <input type="radio" name="optradio1" value="YES">YES
        </div>
    </fieldset>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio2" value="NO">NO
            <input type="radio" name="optradio2" value="YES">YES
        </div>
    </fieldset>
    <button type="submit" value="Submit" class="btn">SUBMIT</button>
</form><?php }


谢谢,我会改正的。但是我仍然有同样的问题。更新,请检查更新您的答案时不要忘记提到@stactoverflowsam1:)作为作者,您将以任何方式得到通知:)@AamirR我已经接受了答案,但我的第一行仍在更新中。
<?php
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($data as $row) { ?><form>
    <input type="text" name="id" value="<?php echo $row['no'] ?>"><br>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio" value="NO">NO
            <input type="radio" name="optradio" value="YES">YES
        </div>
    </fieldset>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio1" value="NO">NO
            <input type="radio" name="optradio1" value="YES">YES
        </div>
    </fieldset>
    <fieldset>
        <div>
            <label>XYZ Question</label>
        </div>
        <div>
            <input type="radio" name="optradio2" value="NO">NO
            <input type="radio" name="optradio2" value="YES">YES
        </div>
    </fieldset>
    <button type="submit" value="Submit" class="btn">SUBMIT</button>
</form><?php }