2013-03-04 56 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]' "); 

应该成为: