【问题标题】:Update Multiple Row Records [duplicate]更新多行记录 [重复]
【发布时间】:2013-09-19 07:03:28
【问题描述】:

首先,我使用PHP Dreamweaver 用phpMyAdmin 数据库制作了一个程序。这个程序在我提交按钮时将我的第一行记录留空,并且一行中的剩余记录仍然存在,即第二行及以下,但第一行中的记录仍在数据库中,为什么会发生?对我来说解决这个程序的任何想法,它也不会更新我的记录。这让我生病了,我需要帮助! tnx...

<?php require_once('Connections/tlsc_conn.php'); 
  mysql_select_db($database_tlsc_conn, $tlsc_conn); 
  $query_Recordset1 = "SELECT * FROM tbl_name"; 
  $Recordset1 = mysql_query($query_Recordset1, $tlsc_conn) or die(mysql_error()); 
  $row_Recordset1 = mysql_fetch_assoc($Recordset1); 
  $totalRows_Recordset1 = mysql_num_rows($Recordset1); 

  if(isset($_POST['submit'])) { 
      $count = count($_POST['id']); 
      $submit = $_GET['id']; 

      for($i=0;$i<$count;$i++){ 
          $sql1="UPDATE $tbl_name SET name='$name[$i]', lastname='$lastname[$i]', email='$email[$i]' WHERE id='$id[$i]'"; 
          $row_Recordset1=mysql_query($sql1); 
       } 

    if($row_Recordset1){ 
            header("location:lulu.php"); 
            exit; 
    }    
 } 
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org    /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <title>Untitled Document</title>
</head>
<body>
  <form name="form2" method="post" action="">
  <table width="634" border="1">
    <tr>
       <td>id</td>
       <td>name</td>
       <td>lastname</td>
       <td>email</td>
    </tr>
   <?php do { ?> 
    <tr>
      <td><?php $id[]=$row_Recordset1['id']; ?><?php echo $row_Recordset1['id']; ?> 
      <input name="id[]" type="hidden" value="<?php echo $row_Recordset1['id'];   ?>" />
      </td>
      <td>
        <input name="name[]" type="text" value="<?php echo $row_Recordset1['name']; ?>">                       
      </td>
      <td>
        <input name="lastname[]" type="text" value="<?php echo $row_Recordset1['lastname']; ?>">
      </td>
      <td>
        <input name="email[]" type="text" value="<?php echo  $row_Recordset1['email']; ?>">       </td>
    </tr>
    <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>  
   </table>
    <p>
    <input type="submit" name="submit" value="Submit" />
    </p>
  </form>
   <p>
</body>
</html>

【问题讨论】:

  • Lacson,您似乎至少有 4 个相同问题的实例。
  • 你检测到我,我只是不能移动这种情况
  • @LacsonCruz 我想我已经为您提供了使用 while { } 循环而不是 do while { } 循环的更新代码......请查看它......它应该可以工作
  • 非常感谢您的帮助 :) 现在我仍在努力做到最好...

标签: php mysql sql variables dreamweaver


【解决方案1】:

将您的 looping 更改为 while 而不是 do-while。然后检查您生成的html,然后在表单提交后检查print_r($_POST),以查看您的post array 的结构。使用 mysqliPDO,因为 mysql 现在已弃用。

编辑:

<?php while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)) { ?> 
<tr>
    <td><?php $id[]=$row_Recordset1['id']; ?><?php echo $row_Recordset1['id']; ?> 
        <input name="id[]" type="hidden" value="<?php echo $row_Recordset1['id'];   ?>" />
    </td>
    <td>
        <input name="name[]" type="text" value="<?php echo $row_Recordset1['name']; ?>">                             </td>
    <td>
        <input name="lastname[]" type="text" value="<?php echo $row_Recordset1['lastname']; ?>">
    </td>
    <td>
        <input name="email[]" type="text" value="<?php echo  $row_Recordset1['email']; ?>">
    </td>
</tr>
<?php }  ?>

【讨论】:

  • 如何将循环更改为 while?
  • 他在循环之前调用了一次mysql_fetch_assoc(),我认为这就是他使用do-while而不是while的原因。
  • 是的,@Barmar,但是在发布问题时他没有发布那部分,所以我让他使用while。 :D
  • 我试图扭转做,而现在的问题,第 1 行数据不存在
【解决方案2】:

首先从第 5 行删除它:

  $row_Recordset1 = mysql_fetch_assoc($Recordset1); // I think this not valid it should be only in loop

并通过while循环尝试:

 <?php while($row_Recordset1 = mysql_fetch_assoc($Recordset1))
{
 ?> 
    <tr>
      <td><?php $id[]=$row_Recordset1['id']; ?><?php echo $row_Recordset1['id']; ?> 
      <input name="id[]" type="hidden" value="<?php echo $row_Recordset1['id'];   ?>" />
      </td>
      <td>
        <input name="name[]" type="text" value="<?php echo $row_Recordset1['name']; ?>">                       
      </td>
      <td>
        <input name="lastname[]" type="text" value="<?php echo $row_Recordset1['lastname']; ?>">
      </td>
      <td>
        <input name="email[]" type="text" value="<?php echo  $row_Recordset1['email']; ?>">       </td>
    </tr>
    <?php }  ?>  
   </table>
    <p>
    <input type="submit" name="submit" value="Submit" />
    </p>
  </form>
   <p>
</body>

【讨论】:

  • 我试过这个,它永远不会让我的第一行空白,tnx,但是有一些问题,它不会更新记录,你知道吗?请...
  • 尝试 echo sql 查询,查看,调试等...
猜你喜欢
  • 2013-12-05
  • 2013-07-18
  • 2013-01-21
  • 2020-04-08
  • 2018-05-18
  • 2023-03-14
  • 2021-06-22
  • 2018-10-11
  • 1970-01-01
相关资源
最近更新 更多