【问题标题】:Problem with MySQL update [duplicate]MySQL更新问题[重复]
【发布时间】:2011-05-31 05:34:51
【问题描述】:

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

问候 :)

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

我在这里遇到了2个问题:

  1. 我的数据库在点击提交按钮后不会更新
  2. 用户可以选择要更新的内容,如果文本框为空,它将使用空格更新数据。如果文本框为空,我希望数据保持原样。

在我的程序中,如果要更新员工信息,必须单击页面中包含链接的名称。 (在我的程序中是需要点击的员工姓名)点击后,会打开一个弹出窗口。

我的 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出现时,会显示如下格式:

员工姓名://此处的文本框 位置:/文本框在这里 部门:/文本框在这里 员工标签:/文本框在这里 **提交按钮**

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

这是我使用的代码:

<?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

【问题讨论】:

  • 您的表单代码是什么样的?也清理您的查询以避免 SQL 注入。
  • 1) 清理该查询! 2)代码中的形式是什么? $_POST['submitted'] 真的提交了吗?
  • 我要将它添加到我的帖子顶部,我在表单中使用了 method="POST"。 @Damien Pirsy:我的 post_submitted 不是提交按钮,它是一个隐藏的文本框
  • @tradyblix 和@Damien Pirsy:我已经添加了我的表单代码,由于我还是个学生,所以我在使用 php 方面还不是很好,如果我有很多问题,很抱歉

标签: php mysql forms sql-update


【解决方案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()"

类型 submit 默认情况下会重新加载页面。 最后,考虑@Sam152 的指针:)

【讨论】:

  • 啊,是的,看起来不错。他使用 GET 将 ID 传递给带有表单的页面,然后使用 POST 将其传递给脚本。将脚本更新为 WHERE emp_id = '".$_POST['emp']."'" 应该可以修复它。+1
  • @tradyblix :问题是如果我删除 onclick,empinfo.php 不会关闭,因为这是一个弹出窗口,在第一个代码中,你的意思是我应该把 POST 而不是 GET 放在员工??
  • @MisaChan :您将&lt;?php echo $_GET['emp']?&gt; 分配给名为eid 的字段名称,因此当您提交时,“emp”将位于$_POST['eid']。对于您的窗口关闭,您可能可以在提交后进行检查:&lt;?php if ($_POST['submitted']) {?&gt;&lt;script&gt;window.close();&lt;/script&gt;&lt;?php } ?&gt;,尝试一下并尝试一下,但就是这样。
  • @tradyblix :我照你说的做了,这就是发生的事情。我只在名称中输入值,pos和dep都是空格,当我单击提交按钮时,它现在更新,但是名称,pos和dep包含空格T-T它甚至没有输入我输入的值名称文本框:(我该怎么办
  • @MisaChan,这是因为您使用的是$_POST['name'],但您的字段是ename,所以您应该将其更改为name
【解决方案2】:

可能有很多问题,但这些点应该可以帮助您调试脚本。

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

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

【讨论】:

  • 我一直在使用 POST 变量,因为它总是给我一个未知的 variable 当将它分配给一个变量时,我也使用了另一种方式,但它似乎仍然不会更新我的数据库,有人说我应该尝试一下,你能指出是什么导致我的错误吗?我认为它在我的 empinfo.php 代码中
  • 啊,抱歉,我的意思是您的表单操作。您需要使用 action="empinfo.php" 将表单指向正确的位置。
  • 我的表单在 empinfo.php 中,你的意思是,我应该把 empinfo.php 放在操作中,而不是 index.php 中?
  • 您的表单操作应该指向脚本。看看 tradyblix 的回答,应该可以解决问题。
  • tradyblix 中的代码和我的一样,是不是意味着我应该使用 POST 而不是 GET?我尝试使用 echo 来检查它是否获得了值,并且确实如此
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-02
  • 2017-03-12
  • 2013-08-30
  • 1970-01-01
相关资源
最近更新 更多