Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在mysql数据库中更新多行时出现问题_Php_Sql Update - Fatal编程技术网

Php 在mysql数据库中更新多行时出现问题

Php 在mysql数据库中更新多行时出现问题,php,sql-update,Php,Sql Update,有人能告诉我我写错了吗?这段代码显示数据库中的数据,但当我按submit时,它只会重新加载页面,而数据库中没有这些字段的更新。。。 我是否应该将更新查询中的变量更改为例如:$\u POST['name'] <?php $host="localhost"; // Host name $username="username"; // Mysql username $password="password"; // Mysql password $db_name="db"; // Databas

有人能告诉我我写错了吗?这段代码显示数据库中的数据,但当我按submit时,它只会重新加载页面,而数据库中没有这些字段的更新。。。 我是否应该将更新查询中的变量更改为例如:$\u 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();

?>

Id
名称
Lastname
mid

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


此外,在测试时,请始终在查询之前回显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;
}
if(isset($\u POST['Submit']))
{

对于($i=0;$i显示和输入,使用:-

<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>


您的post变量设置错误

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

isset($_POST['Submit'])
然后,您需要读取其余的post值并将它们存储在变量中,或者至少正确地引用它们:

$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',  ... 

将索引添加到输入中可以更容易地更新ie name=“id[]”的
isset($\u POST['submit'])
它应该是
isset($\u POST['submit'])
Next这里的$name是什么?请相信您从未在查询中设置变量。此外,您的代码对SQL注入开放,请改用mysqli或PDO。$name是此人的姓名,而不是用户名。我已将代码更改为:非常感谢。这段代码安全吗?还是我应该更改它?对于SQL注入?
$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',  ...