0

mysql データベースから取得した動的データに基づいて複数の行を更新する際に助けが必要です。$_Post を使用して udate.php ファイルに実装しましたが、ajax を使用してこれを行うにはどうすればよいですか。

//THIS SCRIPT FETCH FROM DATABASE
<body>
    <?php
    mysql_connect("localhost","root","");
    mysql_select_db("student") or die("Unable to select database");

    $sql = "SELECT * FROM students ORDER BY id";

    $result = mysql_query($sql) or die($sql."<br/><br/>".mysql_error());

    $i = 0;

    echo '<table width="50%">';
    echo '<tr>';
    echo '<td>ID</td>';
    echo '<td>Name</td>';
    echo '<td>Address</td>';
    echo '</tr>';

    echo "<form name='form_update' method='post' action='update.php'>\n";
    while ($students = mysql_fetch_array($result)) {
    echo '<tr>';
    echo "<td>{$students['id']}<input type='hidden' name='id[$i]'value='{$students['id']}' /></td>";
    echo "<td>{$students['name']}</td>";
    echo "<td><input type='text' size='40' name='address[$i]' value='{$students['address']}' /></td>";
    echo '</tr>';
    ++$i; 
    }
    echo '<tr>';
    echo "<td><input type='submit' value='submit' /></td>";
    echo '</tr>';
    echo "</form>";
    echo '</table>';
    echo $i; ?>


    </body>

// ここに更新スクリプトがあります // 送信をクリックすると、すべての行が更新されますが、まだ ajax で dis を達成できません。 UPDATE.PHP

    $size = count($_POST['address']);

    $i = 0;
    while ($i < $size) {
    $address= $_POST['address'][$i];
    $id = $_POST['id'][$i];

    $query = "UPDATE students SET address = '$address' WHERE id = '$id' LIMIT 1";
    mysql_query($query) or die ("Error in query: $query");
    echo "$address<br /><br /><em>Updated!</em><br /><br />";
    ++$i;
}
?>

これが私がAJAXで試したことです

function update(){
var j=0;
while(j< <?php echo $i ; ?>){
var id=$("#id" + j);    
var address=$("#address" + j);

$.ajax(
{
url:"update.php",
type:"post",
data:{id:id.val(),address:address.val()},
success:function(response)
{
}
});



}

どんな助けでも感謝されます

4

1 に答える 1

0

複数の POST をループして実行する必要はありません。単純にフォーム データをシリアル化し、スクリプトに送信します。例:

$.ajax({
    url: 'update.php',
    type: 'post',
    data: $('#your-form-id').serialize(), 
    success:function(response){
        // do something
    }
});

また、SQL インジェクションを防ぐために PHP を修正することを検討する必要があります: PHP で SQL インジェクションを防ぐにはどうすればよいですか?

于 2013-10-14T17:35:03.877 に答える