我有一个简单的表单旁边的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())中查看错误,不幸的是,我可能已经向前迈进了一步。
非常感谢任何帮助。
非常感谢提前。
答案 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)
我会:
print_r($_POST);
查看POST数据。从字符串生成SQL,以便打印它以进行调试,如下所示:
$ sql =“UPDATE用户SET first_name ='$ first_name'WHERE user_id ='$ user_i'”;
echo $ sql;
mysql_query($ sql)或die(mysql_error());
其中一种技术可能会告诉您为什么PHP生成的SQL不会更新您的数据库记录。
答案 2 :(得分:0)
您按echo $user_id;
设置了user_id字段,但您的变量名称设置为$user_i = $_POST['user_id'];
因此,您的用户ID字段未设置,并且您的Mysql命令将失败。