2010-05-08 147 views
0

我发现了一个来自nettuts的教程,它有一个源代码,所以试图在我的网站实施它。它现在正在工作。但是,它没有注册系统,所以我正在制作一个。事情是,正如我所料,我的代码不工作......它似乎不知道如何INSERT到数据库中。这是将数据插入数据库的函数。INSERT INTO表不起作用?

function register_User($un, $email, $pwd) { 
$query = "INSERT INTO users(username, password, email) 
       VALUES(:uname, :pwd, :email) 
       LIMIT 1"; 

if($stmt = $this->conn->prepare($query)) { 
    $stmt->bind_param(':uname', $un); 
    $stmt->bind_param(':pwd', $pwd); 
    $stmt->bind_param(':email', $email); 
    $stmt->execute(); 

    if($stmt->fetch()) { 
     $stmt->close(); 
     return true; 
    } else return "The username or email you entered is already in      
        use..."; 
} 

}

我已经调试在类的内部数据库的连接,它说,它的连接。我试图用这个方法来代替:

function register($un, $email, $pwd) 
{ 
    $registerquery = $this->conn->query(
       "INSERT INTO users(uername, password, email) 
       VALUES('".$un."', '".$pwd."', '".$email."')"); 
    if($registerquery) 
    { 
     echo "<h4>Success</h4>"; 
    } 
    else 
    { 
     echo "<h4>Error</h4>"; 
    } 
} 

它回声“错误” ...... 能否请你帮我笔点误差在这个??? :(

+0

您是否已检查错误消息的'$ this-> conn-> error'? :) – Thorarin 2010-05-08 10:34:28

+0

您将“用户名”字段拼写为“用户名” – 2010-05-08 10:38:04

回答

4

在第一个例子,它看起来像这条线可能是问题:

if ($stmt->fetch()) { 

通常,数据操作查询(INSERT,UPDATE,DELETE等),不返回结果集,它可以。被提取一般情况下,$stmt->execute();函数将返回你正在寻找的真或假值

在第二个例子,你拼写为“用户名”错误:

INSERT INTO users(uername, password, ...

1

我希望在上面的代码中没有错误...最好把你的查询写成一个字符串并把它作为参数发送。有些时候,串联字符串及其参数变量可能会出现问题。

另请检查字段名是否拼写错误。

0

第一示例中,

$query = "INSERT INTO users(username, password, email) 
      VALUES(:uname, :pwd, :email) 
      LIMIT 1"; 

卸下 “LIMIT 1” 时,应该是

$query = "INSERT INTO users(username, password, email) 
      VALUES(:uname, :pwd, :email)"; 

“限制” 是不是查询构建体的一部分。有关更多信息,请参阅INSERT USAGE DOCUMENTATION

第二个例子,

前面已经提到的,你对“用户名”字段中的拼写错误。你用“uername”代替。这将触发“未知列”错误。

作为最后一点,请务必阅读错误消息,因为这是您第一次找到问题线索的地方。此外,尝试通过数据库客户端测试您的查询构造,以确保您没有错误。

+0

LIMIT仅适用于SELECT语句(从INSERT到SELECT)并且特定于PostgreSQL。 – 2010-05-12 19:50:57

0

嗨,感谢所有帮助! :-) 我会研究我的第一种方法,并尝试应用您的更正,如果我找到时间... 现在我正在使用第二种方法,显然,我拼错了一个字段。

再次感谢!

-1

试试这个。

mysql_query("INSERT INTO `users` (`username`,`password`,`email`) VALUES ('$user','$pass','$email')