1

これは3日間私を悩ませています..私はこれが初めてで、頭を何かに向けようとしています。私は3つのフィールドを含むフォームを持っています。ファーストネーム、姓、マーク。while ループを使用して、mysql テーブルからテーブルを生成しました。テキスト ボックスを使用し、ループを使用して「ID」の後にテキスト ボックスを呼び出し、各テキスト ボックスに一意の名前を付けました。次に、post メソッドを使用して、ユーザーが入力した値で「マーク」列を更新する 2 番目のページに値を送信しています。ここで問題を見つけています。

これが最初のページです。

<html> 
<head><title>Please Enter Your Surname</title></head> 
<body> 
<center> 
<h2><font color=blue>Please Enter Your Surname</font></h2><p> 

<form action="insert.php" method="POST"> 

<?php

$db = mysql_connect("localhost","root","");
if (!$db)
{
    do_error("Could not connect to the server");
}

mysql_select_db("session6",$db)or do_error("Could not connect to the database");


$result = mysql_query("SELECT * FROM members ORDER BY id",$db);


$rows=mysql_num_rows($result);


if(!$rows)
{
    do_error("No results found");
}
else
{
    echo "<table border=3 cellspacing=1 cellpadding=1
    align=center bgcolor=lightblue>\n";
    echo "<caption><h2><font color=blue> Members Details    
            </font></h2></caption>\n";
    echo "<tr><th>Member Id</th><th>Firstname</th><th>Mark</th></tr>\n";
    while ($row = mysql_fetch_array($result))
    {

        echo "<tr>";
        echo "<td strong>" . $row['Id'] . "</td>";
        echo "<td strong>" . $row['Firstname'] . "</td>";?>
        <td strong><input type="text" name="<?php echo $row['Id']; ?>" size="20"></td>
        <tr>
        <?php



    }
    ?><input type="hidden" name="no_of_rows" value="<?php echo $rows; ?>">
    <?php
    echo "</table>\n";
}

mysql_close($db) or do_error("Could not close connection");

function  do_error($error)
{
    echo  $error;
    die();
}

?>
<input type="submit" value="Search"> 
<input type="reset" value="Reset"> 

</form> 

</body></html>
`

次に、ここで更新が行われますが、これは私が問題を抱えているようです:

<html>
<body>
<?php
$db = mysql_connect("localhost","root","");
if (!$db)
{
    do_error("Could not connect to the server");
}

mysql_select_db("marks",$db)or do_error("Could not connect to the database");

$i=1;
while ($i <= $_POST["no_of_rows"])// or $_POST["No_of_Rows"] from form
{   

    $insertsql = "UPDATE members SET mark = " . $_POST[$i] . " WHERE Id = " . $row['Id'] . ";"; 
    echo $_POST['$i'];
    $i++;

}

?>

</body></html>

$_POST[$i'] を echo すると、正しい値が表示されますが、DB は更新されず、ラップトップをゴミ箱に捨てる準備ができていません! ハ!私はそれが何かわからない愚かなことになる可能性があることを知っているので、どんな助けもいただければ幸いです。

4

3 に答える 3

1

更新クエリに一重引用符がありません。これは役立ちます:

$insertsql = "UPDATE `members` SET `mark` = '" . $_POST[$i] . "' WHERE `Id` = '" . $row['Id'] . "' ;"; 

mysql_query更新用のクエリ コマンドも実行していません。

最後に、非推奨の mysql php コマンドを使用しています。代わりに mysqli または pdo を使用してください。SQLインジェクションを防ぐために、クエリでデータをエスケープすることを忘れないでください

于 2013-03-17T19:22:51.720 に答える
0

問題はここの一重引用符であり、おそらく $_POST のキーではないリテラル '$i' を強制します

echo $_POST["$i"];
于 2013-10-15T23:40:26.973 に答える
0

変数を使用する場合、引用符を使用する必要はありません: $_POST[$id];

于 2013-11-06T12:58:12.963 に答える