我正在尝试使用以下代码将用户输入插入数据库。
mysql_query("INSERT INTO 'users' ('Email', 'Username', 'Password') VALUES ($email, $username, $password)");
没有错误,但数据库似乎永远不会插入代码。我做错了吗?
这是我的整个代码,HTML和所有
<?php
DEFINE ('SERVER', 'localhost');
DEFINE ('PASSWORD', '');
DEFINE ('USER', 'root');
$email = $_POST['email'];
$username = $_POST['username'];
$password = SHA1($_POST['pass']);
if(isset('submitted')
{
if($email && $username && $password)
{
$to = 'email@example.com'
$subject = 'subject'
$body = 'there was an error connecting to the db, please check it.'
$dbconnect = @mysql_connect(SERVER, USER, PASSWORD) or die("NO WORK!");
$query = "USE practice"
mysql_query($query);
mysql_query("INSERT INTO users (Email, Username, Password)
VALUES ('$email', '$username', '$password')") or die(mysql_erorr());
}
}
?>
<html>
<form action = "" method = "post">
<label>Email Address</label>
<input type="text" name="email" /> <br />
<label>Desired Username</label>
<input type="text" name="username" /> <br />
<label>Password</label>
<input type="password" name="pass" /> <br />
<input type="submit" value="Register" />
<input type="hidden" name="submitted" value=1 />
</form>
</html>
答案 0 :(得分:2)
也许你也应该把值括在撇号中,也可能你也不应该使用撇号作为表和字段名称,而是在你的情况下使用反引号或什么都没有!
mysql_query("INSERT INTO users (Email, Username, Password)
VALUES ('$email', '$username', '$password')")
但也要确保properly escape the values of these variables!不仅因为SQL注入,而且主要是为了确保正确的SQL语法。想象一下名为O'Brian的用户 - 他会导致SQL错误。
答案 1 :(得分:0)
你可能会收到一些错误,但可能没有显示可能是由于以下行将mysql_error的拼写错误作为mysql_erorr
mysql_query("INSERT INTO users (Email, Username, Password)
VALUES ('$email', '$username', '$password')") or die(mysql_erorr());
只是尝试修复它,看看是否有一些数据库错误,以便很容易找到并修复它。
答案 2 :(得分:0)
同样在mySQL数据库中声明命名空间时。你应该像这样添加反引号。 所以
mysql_query("INSERT INTO users (`Email`, `Username`, `Password`)
VALUES ('$email', '$username', '$password')") or die(mysql_erorr());
否则,您的代码看起来很稳定。