这是使用PHP将数据插入数据库的正确方法吗?

时间:2012-04-17 00:30:16

标签: php mysql

我正在尝试使用以下代码将用户输入插入数据库。

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>

3 个答案:

答案 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());

否则,您的代码看起来很稳定。