簡體   English   中英

致命錯誤:在字符串上調用成員函數Createuser

[英]Fatal error: Call a member function Createuser on string

每當我嘗試調用函數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;
        }
    }

我真的希望有人可以幫助我。

您遇到的問題來自以下代碼部分:

$u = $_POST['username'];
$p = $_POST['password'];
$e = $_POST['email'];

// attempt to create user
$reg = $u->Createuser($u, $p, $e);

您已通過$_POST['username']$u設置為字符串,然后嘗試在該字符串上調用函數。

如果您之前創建了變量$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);

$ reg = $ u-> Createuser($ u,$ p,$ e); 替換為$ reg = $ user-> Createuser($ u,$ p,$ e); 更改對象的名稱。

$ u veriable在此代碼中沖突。 請再加上一個驗證:

替換為:

$u = $_POST['username'];

$username = $_POST['username'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM