我创建了一个表单,允许更改用户“UserLevel”。但是,我似乎无法让它发挥作用。它只是在提交后没有更改UserLevel。我绝对是一个PHP新手。但是我在过去一小时内尝试过对此进行研究,似乎无法在这里取得任何进展。可能是我想念的简单事情。任何帮助表示赞赏。
<form action="dm/userUpdate.php" method="post">
Username: <input type="text" name="username" value="Username">
<br>
User Level: <input type="number" name="userlevel" value="0">
<input type="Submit" name="submit" value="Change">
</form>
<?php
mysql_connect('localhost', 'username', 'password') or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
$userlevel = mysql_real_escape_string($_POST["userlevel"]);
$username = mysql_real_escape_string($_POST["username"]);
mysql_query($con,"UPDATE users SET UserLevel= $userlevel WHERE Username ='$username'");
mysql_close($con);
?>
答案 0 :(得分:0)
你不能混合mysqli
(注意我)和mysql(没有i)功能。这两个库 NOT 可互换。
同样,你的SQL本身也有语法错误 - mysql_real_escape_string()
为你做 NOT 引用字符串 - 它只会转义sql元字符,所以你最终会得到像
... WHERE Username = Miles O\'Brien
而不是
... WHERE Username = 'Miles O\'Brien'
答案 1 :(得分:0)
试试这个
mysql_query("UPDATE users SET UserLevel= '$userlevel' WHERE Username ='$username'");
mysql_close();
你没有定义$ con变量。
答案 2 :(得分:0)
你应该逃避变量。或者不管叫什么。
mysql_query("UPDATE users SET UserLevel= '".$userlevel."' WHERE Username ='".$username."'");
注意我使用常规MySQL,因此不需要链接作为参数。如果您是MySQL的新手,我建议您立即学习MySQLi,因为它有一些方便的改进。
答案 3 :(得分:0)
始终检查语法错误。查看您的表名和表字段,确保它们拼写相同以及拼写。
答案 4 :(得分:0)
<?php
$con = mysql_connect('localhost', 'username', 'password') or die(mysql_error());
mysql_select_db("database", $con) or die(mysql_error());
$userlevel = mysql_real_escape_string($_POST["userlevel"], $con);
$username = mysql_real_escape_string($_POST["username"], $con);
mysql_query("UPDATE users SET UserLevel= " . $userlevel . " WHERE Username ='" . $username . "'", $con);
mysql_close($con);
?>
使用$ con在连接的数据库上保存连接链接并使用mysql_query(而不是mysqli_query用于MySQLi)以及其他与该连接变量一起使用的函数来使用连接的数据库!