MySQL更新问题

时间:2011-05-31 05:34:52

标签: php mysql forms sql-update

  

可能重复:
  table updates empty spaces when user do not enter anything to the textbox

问候:)

每当用户点击提交按钮时,我都无法更新数据库。 我将向您展示我的程序流程,我已经尝试找出问题,但我找不到解决方案。我希望有人可以帮助我。

我遇到了两个问题:

  1. 单击提交按钮后,我的数据库不会更新
  2. 用户可以选择要更新的内容,如果文本框为空,则会使用空格式更新数据。如果文本框为空,我希望数据保持原样。
  3. 在我的程序中,如果要更新员工信息,则必须单击页面中包含链接的名称。 (在我的程序中,需要点击的员工姓名)点击后,会弹出一个弹出窗口。

    我的index.php中的链接包含以下代码:

    <td class="sub" width="100" align="center">
      <a href="" onclick = javascript:newPopup('empinfo.php?emp=<?php echo $eid ?>');><?php echo$ename?></a>
        </td>
    

    注意 empinfo.php是我的弹出窗口,它在点击时调用弹出窗口。 emp是我指定传递给empinfo.php的名称,它包含员工ID。 这里没有问题,我只想给你看流量

    当empinfo.php出现时,它将显示以下格式:

    Employee name: //textbox here
    Position:      /textbox here
    Department:    /textbox here
    Employee Tag:  /textbox here
    **SUBMIT BUTTON**
    

    当用户点击提交按钮时,它应该已使用输入的值更新数据库,但我的不会更新:(

    这是我使用的代码:

    <?php
    $con=mysql_connect('localhost','root','mariel') or die(mysql_error());
    mysql_select_db('intranet',$con);
    if(isset($_POST['submitted']))
        {
        $qry = "UPDATE gpl_employees_list SET emp_nme = '".$_POST['name']."', emp_pos = '".$_POST['pos']."', emp_dep = '".$_POST['dep']."', emp_tag = '".$_POST['tag']."' WHERE emp_id = '".$_GET['emp']."' ";  
        mysql_query($qry) or die (mysql_error());
        }
    ?>
    

    这是我表单中的内容代码,以及我使用的提交:

    <form action="index.php" method="POST">
    <input type='hidden' name='submitted' id='submitted' value='1'/>
    <input type='hidden' name='eid' id='eid' value= '<?php echo $_GET['emp']?>' />  
    
    <fieldset>
                <div class='container'>
                    <label for='ename' >Employee name:</label><br/>
                    <input type='text' name='ename' id='ename' value='' maxlength="50" /><br/><br/>
                 </div>
    
                 <div class='container'>
                    <label for='pos' >Position:</label><br/>
                    <input type='text' name='pos' id='pos' value='' maxlength="50" /><br/><br/>
                 </div>
    
                <div class='container'>
                    <label for='dep' >Department/Division:</label><br/>
                    <input type='text' name='dep' id='dep' value='' maxlength="100" /><br/><br/>
                </div>
    
                <div class='container'>
                    <label for='tag' >Employee Tag:</label><br/>
                    <select name="tag" id="tag">
                        <option value="Y">Yes</option>
                        <option value="N">No</option>
                    </select> <br/><br/>
                </div>
    
                <div class='container'>
                    <input type='submit' name='Submit' value='Submit' onclick = "location.reload();window.close()"/>
                </div>
    </fieldset>     
    </form>
    

    我希望有人可以为我清理它

    MisaChan

2 个答案:

答案 0 :(得分:1)

可能存在许多错误,但这些要点可以帮助您调试脚本。

  • 首先,你需要escape your post variables来确保这样的事情 撇号不会搞砸你的查询, 它也是一个安全漏洞。
  • 其次,确保您的表单操作指向PHP脚本。也许在脚本的顶部放置一个print语句,以确保PHP实际上正在接收数据。
  • 然后将SQL查询的值分配给变量并在运行之前将其打印出来。然后,您可以轻松查看发送到SQL Server的内容。也许在我的phpMyAdmin的SQL管理工具中运行它并观察它的任何错误。

希望这会有所帮助。随时可以使用新信息更新您的问题。

答案 1 :(得分:1)

它没有更新,因为您可能需要引用$_POST['eid']而不是$_GET['emp'],因为您没有index.php index.php?emp=1中的<input type='hidden' name='eid' id='eid' value= '<?php echo $_GET['emp']?>' /> 。您已经拥有该字段,请使用:

onclick = "location.reload();window.close()"

此外,您不需要这样做:

{{1}}

类型提交默认重新加载页面。 最后,考虑一下@ Sam152 的指示:)