我从nettuts找到了一个教程,它有一个源代码,所以尝试在我的网站上实现它..它现在正在工作。但是,它没有注册系统,所以我正在制作一个。事实是,正如我所料,我的代码不起作用......它似乎不知道如何插入数据库。这是将数据插入数据库的函数。
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 :(得分:4)
在第一个示例中,看起来这行可能是问题:
if ($stmt->fetch()) {
通常,数据操作查询(INSERT,UPDATE,DELETE等)不返回可以获取的结果集。通常,$stmt->execute();
函数会返回您正在寻找的真值或假值。
在第二个示例中,您错误地拼写了“用户名”:
INSERT INTO users(uername, password, ...
答案 1 :(得分:1)
我希望上面的代码没有错误...最好把你的查询写成一个字符串并将其作为参数发送。有时候串联及其参数变量可能会出现问题。
另请检查字段名称是拼写错误。
答案 2 :(得分: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)";
“LIMIT”不是查询构造的一部分。有关详细信息,请参阅INSERT USAGE DOCUMENTATION。
第二个例子,
如前所述,您在“用户名”字段中拼写错误。你改用了“uername”。这将触发“未知列”错误。
最后请注意,请务必阅读错误消息,因为这是您首先找到问题线索的地方。此外,尝试通过数据库客户端测试您的查询构造,以确保您没有错误。
答案 3 :(得分:0)
非常感谢所有帮助过的人! :-) 如果我找时间的话,我会调查我的第一种方法并尝试应用你的修正... 现在我正在使用第二种方法,显然,我拼错了一个字段。
再次感谢!
答案 4 :(得分:-1)
试试这个。
mysql_query("INSERT INTO `users` (`username`,`password`,`email`) VALUES ('$user','$pass','$email')