使用While循环php更新mysql数据库

时间:2013-03-17 19:20:59

标签: php mysql while-loop

这已经困扰了我3天了。我是新手,并试图让我的头脑圆满。我有一个涉及3个领域的表格。名字,姓氏,马克斯。我使用了一个while循环从mysql表生成表。我使用了一个文本框并使用循环来调用“ID”后面的文本框,因此每个文本框都是唯一的。然后我使用post方法将值发送到第二个页面,该页面将使用用户刚刚放入的值更新“标记”列。这是我发现问题的地方!

这是初始页面。

<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']时,它会显示正确的值,但不会更新数据库,而且我不准备将我的笔记本电脑放入垃圾箱!哈!我知道这可能是一些愚蠢的东西我只是看不到什么,所以任何帮助都会受到赞赏。

3 个答案:

答案 0 :(得分:1)

您在更新查询中缺少单引号。这会有所帮助:

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

您也没有为更新运行mysql_query查询命令

最后你使用的是不推荐使用的mysql php命令。请改用mysqli或pdo。并且不要忘记在查询中转义数据以防止sql注入

答案 1 :(得分:0)

问题是这里的单引号,迫使文字'$ in'可能不是$ _POST中的关键

echo $_POST["$i"];

答案 2 :(得分:0)

使用变量时无需使用引号: $ _POST [$ ID];