2013-03-04 57 views
0

有人可以告訴我是我寫錯了嗎?此代碼顯示來自數據庫的數據,但當我按下提交它只是重新加載頁面,並沒有那些字段的更新數據庫... 我應該更新更新查詢中的變量,例如:$ _POST ['name']更新MySQL數據庫中的多行時遇到的問題

<?php 

$host="localhost"; // Host name 
$username="username"; // Mysql username 
$password="password"; // Mysql password 
$db_name="db"; // Database name 
$tbl_name="test"; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$sql="SELECT * FROM $tbl_name"; 
$result=mysql_query($sql); 

// Count table rows 
$count=mysql_num_rows($result); 
?> 

<table width="500" border="0" cellspacing="1" cellpadding="0"> 
<form name="form1" method="POST" action=""> 
<tr> 
<td> 
<table width="500" border="0" cellspacing="1" cellpadding="0"> 

<tr> 
<td align="center"><strong>Id</strong></td> 
<td align="center"><strong>Name</strong></td> 
<td align="center"><strong>Lastname</strong></td> 
<td align="center"><strong>mid</strong></td> 
</tr> 

<?php 
while($rows=mysql_fetch_array($result)){ 
    $id[]=$rows['id']; 
?> 

<tr> 
<td align="center"> 
<input name="id[]" type="text" id="id" value="<? echo $rows['id']; ?>"> 
</td> 
<td align="center"> 
<input name="name[]" type="text" id="name" value="<? echo $rows['name']; ?>"> 
</td> 
<td align="center"> 
<input name="lastname[]" type="text" id="lastname" value="<? echo $rows['lastname']; ?>"> 
</td> 
<td align="center"> 
<input name="midmark[]" type="text" id="midmark" value="<? echo $rows['midmark']; ?>"> 
</td> 
</tr> 
<? 
} 
?> 

<tr> 
<td colspan="4" align="center"><input type="submit" name="Submit" value="Submit"></td> 
</tr> 
</table> 
</td> 
</tr> 
</form> 
</table> 

<?php 
      if(isset($_POST['submit'])){ 
       for($i=0;$i<$count;$i++){ 
       $sql1=mysql_query("UPDATE $tbl_name SET name='$name[$i]', lastname='$lastname[$i]', midmark='$midmark[$i]' WHERE id='$id[$i]' "); 
       $result1=mysql_query($sql1); 
       } 
      } 

       if(isset($result1)){ 
       header("location:multiple.php"); 
       } 
       mysql_close(); 

?> 
+0

添加索引到輸入端米更容易更新,即name =「id [<? echo $ rows ['id']; '']' – Waygood 2013-03-04 12:34:29

+0

'isset($ _ POST ['submit'])'it is'isset($ _ POST ['Submit'])'Next這裏是什麼名字? – 2013-03-04 12:36:51

+0

相信你永遠不會在你的查詢中設置變量。此外,你的代碼是SQL注入,使用的mysqli或PDO敞開,而不是 – AmazingDreams 2013-03-04 12:37:58

回答

0

試試這個當查詢之前呼應SQL字符串,希望它會幫助你。

if(isset($_POST['Submit'])) 
{ 
    for($i=0;$i<$count;$i++) 
    { 
     $sql1=mysql_query("UPDATE `".$tbl_name."` SET name='".magic($_REQUEST['name'][$i])."', lastname='".magic($_REQUEST['lastname'][$i])."', midmark='".magic($_REQUEST['midmark'][$i])."' WHERE id='".magic($_REQUEST['id'][$i])."' "); 
      $result1=mysql_query($sql1); 
    } 
} 


function magic($value) 
{ 
    if(get_magic_quotes_gpc()) 
     $value = stripslashes($value); 
    if(function_exists("mysql_real_escape_string")) 
     $value = mysql_real_escape_string($value); 
    else 
     $value = addslashes($value); 
    return $value; 
} 
+0

非常感謝它的工作。這段代碼安全嗎?或者我應該改變它?爲SQL注入? – 2013-03-04 12:54:33

+0

歡迎您.... – 2013-03-04 12:56:55

+0

查看更新的代碼。它從sql注入是安全的。 – 2013-03-04 13:01:35

0

試着把'。'在你的SQL字符串中的變量和文本之間使用單引號 - 它可能試圖評估$ name [$ i] 的兩個部分,例如,

'UPDATE '.$tbl_name.' SET name=\''.$name[$i].' ...etc 

此外,一直在測試,看看它會做

0

顯示和輸入使用: - 使用

<tr> 
<td align="center"> 
<input name="data[<? echo $rows['id']; ?>][name]" type="text" id="name" value="<? echo $rows['name']; ?>"> 
</td> 
<td align="center"> 
<input name="data[<? echo $rows['id']; ?>][lastname]" type="text" id="lastname" value="<? echo $rows['lastname']; ?>"> 
</td> 
<td align="center"> 
<input name="data[<? echo $rows['id']; ?>][midmark]" type="text" id="midmark" value="<? echo $rows['midmark']; ?>"> 
</td> 
</tr> 

然後過程: -

<?php 
     if(isset($_POST['submit'])) 
     { 
      while(list($index,$record)=each($_POST['data'])) 
      { 
       $sql=mysql_query("UPDATE $tbl_name SET name='".mysql_real_escape_string($record['name'])."', lastname='".mysql_real_escape_string($record['lastname'])."', midmark='".mysql_real_escape_string($record['nmidmarkame'])." WHERE id=".intval($index)); 
       $result1=mysql_query($sql1); 
      } 
     } 
?> 
0

您的帖子變量設置錯誤。

首先你所有的if語句,交[「提交」]是小寫的,它需要是相同的形式:

isset($_POST['Submit']) 

然後,你需要閱讀後值的其餘部分,它們存儲在變量或至少引用它們正確:

$sql1=mysql_query("UPDATE $tbl_name SET name='$name[$i]', lastname='$lastname[$i]', midmark='$midmark[$i]' WHERE id='$id[$i]' "); 

應該成爲: