0

有人能告诉我我写错了吗?此代码显示来自数据库的数据,但是当我按下提交时,它只是重新加载页面并且数据库中没有这些字段的更新......我应该将更新查询中的变量更改为例如:$_POST['name']

<?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();

?>
4

4 回答 4

0

尝试放一个“。” 在 SQL 字符串和文本中的变量之间并使用单引号 - 它可能试图评估 $name[$i] 的两个部分,例如

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

此外,在测试时始终在查询之前回显 SQL 字符串以查看它会做什么

于 2013-03-04T12:37:50.617 回答
0

试试这个,希望对你有帮助。

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;
}
于 2013-03-04T12:39:50.263 回答
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);
            }
        }
?>
于 2013-03-04T12:41:57.797 回答
0

您的帖子变量设置错误。

首先,您的 if 语句, post['submit'] 是小写的,它需要与表单中的相同:

isset($_POST['Submit'])

然后您需要读取其余的帖子值并将它们存储在变量中或至少正确引用它们:

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

应该变成:

$name = $_POST['name[$i]'];
$lastname = $_POST['lastname[$i]'];

$sql1=mysql_query("UPDATE $tbl_name SET name='$name', lastname='$lastname',  ... 
于 2013-03-04T12:42:57.507 回答