MYSQL更新没有更新数据库?

时间:2011-11-13 18:24:54

标签: php mysql html

我有一个简单的表单旁边的PHP更新查询,根本不起作用!我知道PHP正在页面上工作,因为有几个验证检查需要事先传递,这些检查工作正常。其自身的形式在Colorbox Popup工具中。

我的HTML表单代码是:

<div id="stylized" class="myform">
<form action="#" method="post">
  <input type="hidden" name="user_id" value="<?php echo $user_id; ?>" />
  <label>First Name:<span class="small">Enter your forename</span></label>
  <input id="first_name" type="text" name="first_name" maxlength="50" placeholder="e.g. Joe" required autofocus/>
<div class="spacer"></div>
<input type="submit" id="update" name="update" value="Continue to Step 2!">
</form>
</div>

使用PHP代码如下(这是在页面上的HTML代码之上):

<?php 
if($_POST['update']){ 

    $user_i            = $_POST['user_id'];
    $f_name            = $_POST['first_name'];
    $first_name        = ucfirst($f_name);

mysql_query("UPDATE user SET first_name = '$first_name' WHERE user_id = '$user_i'") or die(mysql_error());
 } ?>

实际提交似乎正常,之后Popup刷新,但数据库没有更新!我已经检查了语法和数据库字段。 'user'和'first_name'和'user_id'是正确的。

更新:由于弹出框刷新,我无法从'或者死(mysql_error())中查看错误,不幸的是,我可能已经向前迈进了一步。

非常感谢任何帮助。

非常感谢提前。

3 个答案:

答案 0 :(得分:0)

当你说弹出框时,我假设你正在使用ajax从表单到服务器进行通信,正如你所说,很难查看提交的数据。如果是这种情况,请尝试:

error_log(serialize($_POST)); 

这将强制在序列化格式中使用$ _POST数据在错误日志中输入一个条目,这样您就可以检查正在提交的值是否正确填充。

您还需要清理要添加到SQL的变量:

$sql = "UPDATE user SET first_name = " . mysql_real_escape_string($first_name) . " WHERE user_id = " . mysql_real_escape_string($user_i) . " LIMIT 1";

mysql_query($sql);

答案 1 :(得分:0)

我会:

  1. print_r($_POST);查看POST数据。
  2. 从字符串生成SQL,以便打印它以进行调试,如下所示:

    $ sql =“UPDATE用户SET first_name ='$ first_name'WHERE user_id ='$ user_i'”;

    echo $ sql;
    mysql_query($ sql)或die(mysql_error());

  3. 其中一种技术可能会告诉您为什么PHP生成的SQL不会更新您的数据库记录。

答案 2 :(得分:0)

您按echo $user_id;设置了user_id字段,但您的变量名称设置为$user_i = $_POST['user_id']; 因此,您的用户ID字段未设置,并且您的Mysql命令将失败。