2016-03-08 68 views
0

一個成員函數CREATEUSER每當我試圖調用函數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

你是什麼由POST傳遞的價值觀?請提供您已通過的一些示例數據。 – RK12

+1

可能的重複[參考 - 這個錯誤在PHP中意味着什麼?](http://stackoverflow.com/questions/12769982/reference-what-does-this-error-mean-in-php) – Henders

+0

例如username = >「test」password =>「test」email =>「[email protected]」 –

回答

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); 
0

$ REG = $ u->創建用戶($ u,$ p,$ e);將其替換爲$ reg = $ user-> Createuser($ u,$ p,$ e);更改對象的名稱。

+0

是的,我忘了說這個函數來自class User,而且我已經創建了這個類的對象 –

0

$ U veriable在此代碼衝突。請採取另一種veriable:

替換此:

$u = $_POST['username']; 

隨着

$username = $_POST['username']; 
+0

謝謝你的工作! –

+0

如果您已通過此解決問題,請將答案標爲正確答案。 – RK12