2016-11-24 37 views
0

所以我使用函數來檢查帳戶是否存在。除了在名稱已被佔用時打印用戶名之外,它工作得很好。數據庫的功能按預期運行。返回錯誤信息中的$username只是一個奇怪的問題。PHP:爲什麼我的變量不通過,但在相同的範圍內?

Demo Page

試用用戶藥水,它會顯示不可用,但指出$username,而不是藥水在那裏爲狼在這種情況下是可用的。

if (isset($_POST['submit'])) { 
    if (empty($_POST['username'])) { 
     $error = "Username cannot be empty."; 
    } 
    elseif (preg_match('/[\'^£$%&*()}{@#~?><>,|=+¬-]/', $_POST['username'])) 
    { 
     $error = "Username must contain up to 12 characters of A-z letters 0-9 numbers and _."; 
    } 
    else 
    { 
     //set the username variable 
     $username = $_POST['username']; 

     //$username = preg_replace("/[^A-Za-z0-9_]/", "", $username); 

     //$username=preg_replace('/[^0-9a-zA-Z_]/',"",$input) 

     //check the runescape website if it exists 
     $likelyhood = checkUsername($username); 

     //if already exist, update my database 
     if($likelyhood === 28){ 
      $error = "Congratulations, the username $username appears to be availible!"; 
      addNewUserToDb($username, 1); 
     //if availible, update my database 
     } 
     if($likelyhood < 28){ 
      $error = 'Sorry, the username $username is already taken.'; 
      addNewUserToDb($username, 0); 
     } 
    } 
} 
+3

變量不作爲值傳遞的,但在單引號實際字符串。要麼做''...用戶名'。$ username''。已經...'或者使用雙引號而不是'''(它會傳遞變量的值)。 – Qirel

+0

請參閱[關於字符串的PHP文檔](http://php.net/manual/en/language.types .string.php#language.types.string.syntax.single) – Qirel

+0

Omg。我在一個簡單的事情上熬夜強調...... !!!! – Potion

回答

0

如果您希望變量由PHP來解釋,你需要把字符串中的雙引號:

$error = "Sorry, the username $username is already taken."; 
0

要串插變量,你應該使用雙引號:

$error = "Sorry, the username $username is already taken."; 

這就是說PHP doc

注意:與雙引號和heredoc語法不同,特殊字符的變量和轉義序列在單引號字符串中出現時不會展開。

單引號,你需要連接字符串:

$error = 'Sorry, the username '.$username.' is already taken.'; 
相關問題