首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库没有更新!在PHP和MySQL中没有错误

数据库没有更新!在PHP和MySQL中没有错误
EN

Stack Overflow用户
提问于 2013-04-26 17:21:37
回答 3查看 4.6K关注 0票数 2

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

代码语言:javascript
复制
  <?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>

请谁来帮帮我。谢谢!

EN

回答 3

Stack Overflow用户

发布于 2013-04-26 17:25:11

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

因此,不要将$_POST值直接放入查询中。请改用MySQLi或PDO。

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

  1. header可能在其他地方不起作用,因为您在第1行输出数据(您似乎依赖于某些服务器设置)
  2. This:<?php $id[]=$rows['e_jid']; ?>除了生成PHP通知之外什么也不做。
票数 2
EN

Stack Overflow用户

发布于 2013-04-26 18:59:59

看起来t_sigide_prioritye_jid都是整数。所以下面的代码更安全。

代码语言:javascript
复制
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:

变化

代码语言:javascript
复制
  <td align="left"><?php $id[]=$rows['e_jid']; ?><?php echo $rows['e_jid']; ?></td>

代码语言:javascript
复制
   <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]);

票数 0
EN

Stack Overflow用户

发布于 2013-05-08 05:21:10

You never POST $id[] !

我过去常常把它贴出来:

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

并得到它

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

您应该注意以下几点。

  • 永远不会在开发阶段做真正的更新。
  • 手表的“查看页面源代码”总是在html
  • 保持它的简单,总是使用表中的一些数据。
  • SQL:字符串数据在引号中。不带引号的数字。

您可以使用以下代码来测试

代码语言:javascript
复制
...
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16232952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档