Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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 更新查询只更新最后一行,并用它影响其他行';s值_Php_Mysql - Fatal编程技术网

Php 更新查询只更新最后一行,并用它影响其他行';s值

Php 更新查询只更新最后一行,并用它影响其他行';s值,php,mysql,Php,Mysql,您需要更改表单,以便每一行都有一个包含该行ID的隐藏输入 <?php include 'connection.php'; $i = 0; while ($i < 5) { // define each variable $scoreaway = $_POST['f'][$i]; // do the update and print out some info just to provide some visual feedb

您需要更改表单,以便每一行都有一个包含该行ID的隐藏输入

    <?php
    include 'connection.php';
     $i = 0; 
   while ($i < 5) { 
   // define each variable 
   $scoreaway = $_POST['f'][$i]; 

   // do the update and print out some info just to provide some visual feedback 
   echo $query = "UPDATE lectures_table SET first='".$scoreaway."' WHERE           
   group_num=1"; 
   mysql_query($query) or die ("Error in query: $query");  

   $i++; 
   }

   mysql_close();  

   ?>

此外,您应该从过时的mysql扩展切换到mysqli或PDO,并使用准备好的语句。您当前的代码易受SQL注入攻击。请参见

“更新”查询将更新
group_num=1
的任何行和所有行,因为这正是在查询中写入的内容。在查询中使用
$\u POST['group_num']
而不是
1
。无需将隐藏的输入放入
while()
循环中,因为每一行的值都相同。在循环外执行一次。给定的group_num=1在where条件下,值会动态变化,但条件相同,所以最后一个值会更新。先生,我尝试过,但没有任何更改。我不知道为什么最后一行会将其值赋予其他行,因为
UPDATE
语句使用的是相同的“where group_num=$\u POST['group_num']``对于每个输入。行中是否有一个ID,它应该用来只更新该行?我收到错误消息Undefined index:ID为foreach()提供的参数无效。我该怎么办?显然,您需要用包含每行主键的列的实际名称替换它。我不知道您的表结构,我猜它会被命名为
id
,因为这很常见。
    <?php
    include 'connection.php';
     $i = 0; 
   while ($i < 5) { 
   // define each variable 
   $scoreaway = $_POST['f'][$i]; 

   // do the update and print out some info just to provide some visual feedback 
   echo $query = "UPDATE lectures_table SET first='".$scoreaway."' WHERE           
   group_num=1"; 
   mysql_query($query) or die ("Error in query: $query");  

   $i++; 
   }

   mysql_close();  

   ?>
while($row=mysql_fetch_array($result)){   ?>
<tr>  
    <td><input type="hidden" name="id[]" value="<?php echo $row['id'];  ?>" /></td>
    <td><input type="text" placeholder="First Lecture" name="day[]" value="<?php echo $row['day']; ?>"></td>
    <td><input type="text" placeholder="First Lecture" name="f[]" value="<?php echo $row['first']; ?>"></td>

</tr>
<?php }
foreach ($_POST['id'] as $i => $id) {
    $scoreaway = $_POST['f'][$i];
    $day = $_POST['day'][$i];
    $query = "UPDATE lectures_table 
                SET first='$scoreaway', day = '$day' 
                WHERE id = $id";
    mysql_query($query);
}