每当我尝试调用函数Createuser()时,它都会给我这个错误
致命错误:在字符串
上调用成员函数Createuser()我真的不知道为什么,因为我的其他功能都有效。
我调用函数的代码:
$u = $_POST['username'];
$p = $_POST['password'];
$e = $_POST['email'];
// attempt to create user
$reg = $u->Createuser($u, $p, $e);
// if an error code is sent back, it will put it in a session.
switch ($reg)
{
case 2:
$_SESSION['err'] = 2;
break;
case 3:
$_SESSION['err'] = 3;
break;
case 10:
$_SESSION['err'] = 10;
break;
功能本身:
function Createuser($username, $password, $email)
{
include("connection.php");
$info = mysqli_query($db2, "SELECT * FROM users WHERE username = '$username' AND password = '$password'");
// If any field is not empty
if(($username != NULL) && ($password != NULL) && ($email != NULL))
{
// If the result matches break the process
if(mysqli_num_rows($info) == 0)
{
// If rank is defined make it rank 0 else rank equels rank
if($rank == NULL)
{
$rank = 0;
}
else
{
$rank = $rank;
}
// Insert into $table
if(mysqli_query($db2, "INSERT INTO users VALUES(NULL, '$username', '$password', '$email', 0)"))
{
return 10;
}
}
else
{
// Return error code 3
return 3;
}
}
else
{
// Return error code 2
return 2;
}
}
我真的希望有人可以帮助我..
答案 0 :(得分:1)
您遇到的问题来自以下代码部分:
$u = $_POST['username'];
$p = $_POST['password'];
$e = $_POST['email'];
// attempt to create user
$reg = $u->Createuser($u, $p, $e);
您已$u
将$_POST['username']
设置为字符串,然后尝试调用该字符串上的函数。
如果您之前创建了一个变量$u
,这是一个类User(如评论中所述),那么通过$u = $_POST['username'];
,您已经销毁了该对象并设置了它是一个字符串。
您需要执行以下操作:
$user = new User(); // or however the user object is created
$u = $_POST['username'];
$p = $_POST['password'];
$e = $_POST['email'];
// attempt to create user
$reg = $user->Createuser($u, $p, $e);
答案 1 :(得分:0)
$ reg = $ u-> Createuser($ u,$ p,$ e);将其替换为$ reg = $ user-> Createuser($ u,$ p,$ e);更改对象的名称。
答案 2 :(得分:0)
$ u veriable在此代码中存在冲突。请采取另一个可靠的:
替换这个:
$u = $_POST['username'];
使用
$username = $_POST['username'];