2014-09-28 90 views
0

我有一个表单,用户可以使用它来更改其用户名,但仅适用于数字!用户名更改仅更改数字,而不是文字

用户名类型设置为VARCHAR,我可以手动设置文本用户名,并且在注册时,条目可以是使用INSERT INTO代码的文本。

这里的形式

<html> 
<center><h2>Username Change</h2></center> 
<body> 
<form method="post" action=""> 
<input type="text" name="something" value="<?= isset($_POST['something']) ? ($_POST['something']) : '' ?>" /> 
<input type="submit" name="submit" /> 
</form> 

而这里的代码

if(isset($_POST['submit'])){ 
    $newname = $_POST['something']; 
    $change = mysqli_query($con,"UPDATE users SET users.username = $newname WHERE users.id=$id4"); 
    } 

不知道我要去哪里错了!

+8

你意识到字符串应该用SQL引用.....但是当你使用MySQLi时,切换到使用预处理语句并绑定变量....那么你不需要记得引用字符串或逃避你的价值,所以你也保护自己免受SQL注入 – 2014-09-28 10:05:30

+0

耶稣基督我总是错过愚蠢的东西!谢谢! – 2014-09-28 10:09:34

回答

-1
 
    $change = mysqli_query($con,"UPDATE users SET users.username = '$newname' WHERE users.id=$id4"); 
+0

有一个公然的SQL注入问题。它解决了这个问题,但很难解决它! – Evert 2014-09-28 13:40:19