2

提交后数据库未更新。我什至没有收到错误。在这里,我试图从数据库中检索值并以 HTML 表格格式显示,用户也可以从这里更新值。因此,当我在这里更改值并提交时,数据库没有得到更新。

  <?php

    print"<center><h3><a href=\"index.html\">Go Back</a></h3><br>"; 


    // Connect to server and select databse.
    $con = mysql_connect('localhost','tpsadmin','tps')or die("Cannot connect to DB");
    mysql_select_db('traffic',$con)or die("Cannot select DB");


    $query = "SELECT * FROM emergency";
    $result = mysql_query($query) or die(mysql_error()); 

    // Count table rows
    $count=mysql_num_rows($result);

    //UPDATE  `emergency` SET  `t_sigid` =  '2',`e_priority` =  '3' WHERE  `emergency`.`e_jid` =70;

    if( isset($_POST['Submit'])){
        for($i=0;$i<$count;$i++){
            $sql1 = "UPDATE emergency SET 
                e_latitude='{$_POST['e_latitude'][$i]}', 
                e_longitude='{$_POST['e_longitude'][$i]}', 
                t_sigid='{$_POST['t_sigid'][$i]}', 
                e_priority='{$_POST['e_priority'][$i]}'   
                WHERE e_jid='$id[$i]'"; 
            $result1 = mysql_query($sql1) or die(mysql_error());
        }
    }


    if($result1){
        header("location: em_disp.php");
    }
    mysql_close();
    ?>



    <!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=UTF-8" />
    <script language="JavaScript1.1" type="text/javascript">
    <!--
    function mm_jumpmenu(targ,selObj,restore){ //v3.0
      eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
      if (restore) selObj.selectedIndex=0;
    }
    //-->
    </script>
    <title>Emergency Table - Update</title>
    </head>

    <body>


    <table width="500" border="0" cellspacing="1" cellpadding="0">
    <form name="form1" method="post" action="">
    <tr>
    <td>
    <table border="5" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#808080" width="50&#37;" text-align="center" id="AutoNumber2" bgcolor="#C0C0C0">
    <tr>
    <td align="center">e_jid</td> 
    <td align="center">amb_id</td> 
    <td align="center">e_latitude</td> 
    <td align="center">e_longitude</td> 
    <td align="center">t_sigid</td> 
    <td align="center">e_priority</td>
    </tr>
    <?php
    while($rows=mysql_fetch_array($result)){
    ?>
    <tr>
    <td align="left"><?php $id[]=$rows['e_jid']; ?><?php echo $rows['e_jid']; ?></td>
    <td align="center"><?php echo $rows['amb_id']; ?></td>
    <td align="center"><input name="e_latitude[]" type="text" id="e_latitude" value="<?php echo $rows['e_latitude']; ?>" size="10"></td>
    <td align="center"><input name="e_longitude[]" type="text" id="e_longitude" value="<?php echo $rows['e_longitude']; ?>" size="10"></td>
    <td align="center"><input name="t_sigid[]" type="text" id="t_sigid" value="<?php echo $rows['t_sigid']; ?>" size="10"></td>
    <td align="center"><input name="e_priority[]" type="text" id="e_priority" value="<?php echo $rows['e_priority']; ?>" size="10" /></td>
    </tr>
    <?php
    }
    ?>
    <tr>
    <td colspan="6" align="center"><input type="submit" name="Submit" value="Submit"></td>
    </tr>
    </table>
    </td>
    </tr>
    </form>
    </table>



    </body>
    </html>

请有人帮助我。谢谢 !

4

3 回答 3

2

您忘记了 处的花括号$id[$i]

那,并且不要将$_POST值直接放在您的查询中。请改用 MySQLi 或 PDO。

顺便说一句,您的代码有更多错误:

  1. 可能无法在header其他地方工作,因为您在第 1 行输出数据(您似乎依赖于某些服务器设置)
  2. 这:<?php $id[]=$rows['e_jid']; ?>除了生成一个 PHP 通知之外什么也不做。
于 2013-04-26T09:25:10.540 回答
0

看起来t_sigid和是e_priority整数e_jid。所以下面的代码更安全。

for($i=0;$i<$count;$i++){
    $t_sigid=intval($_POST['t_sigid'][$i]);
    $e_priority=intval($_POST['e_priority'][$i]);
    $e_jid=intval($id[$i]);
    $sql1 = "UPDATE emergency SET 
        e_latitude='{$_POST['e_latitude'][$i]}', 
        e_longitude='{$_POST['e_longitude'][$i]}', 
        t_sigid='$t_sigid', 
        e_priority='$e_priority'   
        WHERE e_jid='$e_jid'"; 
    $result1 = mysql_query($sql1) or die(mysql_error());
}

编辑1:

改变

  <td align="left"><?php $id[]=$rows['e_jid']; ?><?php echo $rows['e_jid']; ?></td>

   <td align="left"><input name="id[]" type="text" id="id" value="<?php echo $rows['e_jid']; ?>" size="10"></td>

并将$e_jid=intval($id[$i]);我上面提到的更改为$e_jid=intval($_POST['id'][$i]);

于 2013-04-26T10:59:58.783 回答
0

你从不 POST $id[]

我曾经发布它:

<input type="hidden" name="idArray[]" value="<?php echo $rows['e_jid']; ?>" >

并得到它

WHERE e_jid={$_POST['idArray'][$i]}";

你应该注意以下几点。

  • 永远不要在开发阶段进行真正的更新。
  • 始终在生成的 html 处观看“查看页面源代码”。
  • 为简单起见,请始终仅使用表中的少量数据。
  • SQL:引号中的字符串数据。没有引号的数字。

您可以使用以下代码进行测试

...
Here, come in, your instructions database.
should be : mysqli or PDO instructions.
...

if( isset($_POST['Submit'])){
        for($i=0;$i<$count;$i++){
            $sql1 = "UPDATE emergency SET 
                e_latitude='{$_POST['e_latitude'][$i]}' 
                WHERE e_jid={$_POST['idArray'][$i]}"; 
                echo "sql ".$sql1."<br />\n";
        }
    if($result1){
       ... Database close action...
       header("location: em_disp.php");
       }
    }

<table width="500" border="0" cellspacing="1" cellpadding="0">
  <form name="form1" method="post" action="">
    <tr>
    <td>
    <table border="5" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#808080" width="50&#37;" text-align="center" id="AutoNumber2" bgcolor="#C0C0C0">
      <tr>
         <td align="center">e_jid</td> 
         <td align="center">amb_id</td> 
         <td align="center">e_latitude</td>
      </tr>
    <?php
    while($rows=....){
    ?>
  <tr>
         <td align="left"><?php echo $rows['e_jid']; ?></td>
          <input type="hidden" name="idArray[]" value="<?php echo $rows['e_jid']; ?>" >
         <td align="center"><?php echo $rows['amb_id']; ?></td>                              
         <td align="center"><input name="e_latitude[]" type="text" id="e_latitude" value="<?php echo $rows['e_latitude']; ?>" size="10"></td>
      </tr>
    <?php
    }
    ?>
  <tr>
         <td colspan="6" align="center"><input type="submit" name="Submit" value="Submit"></td>
      </tr>
    </table>
    </td>
    </tr>
  </form>
</table>
</body>
</html>

始终在生成的 html 处观看“查看页面源代码”。看起来不错 :

在此处输入图像描述

提交后的输出:

在此处输入图像描述

其他动作只有在它正常工作时才进行。

如果您遵循了这一点,那么您的问题永远不会像这样。

Database is not updating ! No error in PHP & MySQL

于 2013-05-07T21:21:09.553 回答