2013-03-17 141 views
1

這一直在竊聽我3天現在..我是新來的,並試圖讓我的頭圓的東西。我有一個涉及3個領域的表格。名字,姓氏,標記。我使用了一個while循環來從mysql表中生成表。我使用了一個文本框,並使用循環來調用「ID」後的文本框,以便每個文本框都被唯一命名。然後,我使用post方法將值發送到第二個頁面,該頁面將用用戶剛輸入的值更新'標記'列。這是我發現我的問題的地方!使用While循環php更新mysql數據庫

這是首頁。

<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']它顯示了正確的值,但不更新數據庫,我不準備把我的筆記本電腦扔進垃圾桶!哈!我知道這是可能會愚蠢的我什麼都看不到,所以任何幫助將不勝感激。

+0

刪除'mysql_ *'並開始使用'PDO',因爲它已被棄用... – Houssni 2013-11-06 13:04:21

回答

1

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

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

你還沒有爲更新

最後您使用的是棄用MySQL的PHP​​命令運行mysql_query查詢命令。改用mysqli或pdo。不要忘記在查詢逃跑數據,以防止SQL注入

0

問題是這裏的單引號,強制文字「$ I」,這大概在$ _ POST

echo $_POST["$i"]; 
0

無需心不是關鍵使用變量時使用引號: $ _POST [$ id];