簡體   English   中英

使用While循環php更新mysql數據庫

[英]Updating mysql database using While loop php

這已經困擾了我三天了。.我是這個新手,正在設法弄清楚我的想法。 我有一個涉及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']時,它會顯示正確的值,但不會更新數據庫,因此我不准備將筆記本電腦扔進垃圾箱! 哈! 我知道這很可能是愚蠢的,但我什至看不到,所以我們將不勝感激。

您在更新查詢中缺少單引號。 這將有助於:

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

您也沒有運行mysql_query查詢命令進行更新

最后,您正在使用不推薦使用的mysql php命令。 改用mysqli或pdo。 並且不要忘記在查詢中轉義數據以防止sql注入

問題是這里的單引號,強制使用文字'$ i',這可能不是$ _POST中的鍵

echo $_POST["$i"];

使用變量時,無需使用引號:$ _POST [$ id];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM