2013-03-07 69 views
0

我有兩種獲取玩家用戶名的方式,一種是當他們登錄時,另一種是當他們使用電子郵件登錄時。然而,當他們作爲新玩家登錄時,它會連接到Minecraft.net數據庫並檢查用戶名/密碼/電子郵件是否正確,如果是這樣,它會將它們添加到我們的數據庫中而不用密碼。mysql_num_rows不起作用,但它在另一個查詢上工作

但我似乎無法獲得第二個MYSQL查詢的工作,沒有mysql錯誤或連接錯誤,但行內仍有1行時出現0。

if (strpos($_POST['username'],'@') === false) { 
       $username = $_POST['username']; 
       $res = mysql_query("SELECT * FROM users WHERE user_email='$username'"); 
       $ign_exists_check = mysql_num_rows($res); 
       $username_exists_check = 0; 
       if(!$res) die ('Unable to run query1:'.mysql_error()); 
      } 
      else { 
       $username = $_POST['username']; 
       $res2 = mysql_query("SELECT * FROM users WHERE user_name='$username'"); 
       $username_exists_check = mysql_num_rows($res2); 
       $ign_exists_check = 0; 
       if(!$res2) die ('Unable to run query1:'.mysql_error()); 
      } 
      die($username_exists_check . $ign_exists_check); 
      if ($usernamea_exists_check == 0 && $ign_exists_check == 0) 
       { 
+0

這是正確的嗎? 'strpos($ _ POST ['username'],'@')=== false' =>'user_email ='$ username''看起來你設置的條件不對。 – sofl 2013-03-07 14:46:38

+0

讓我看看它是否正常工作.. – Lewes 2013-03-07 14:47:49

+0

不起作用,它使用電子郵件作爲用戶名登錄我,但它假設以電子郵件所在行的數據庫中的用戶名登錄我。 – Lewes 2013-03-07 14:49:48

回答

0

如果你有沒有錯誤,0行當年查詢「工作」,它只是沒有找到任何符合標準的行。 你需要做的是呼應了這樣的查詢:

echo "SELECT * FROM users WHERE user_name='$username'"; 

然後你會看到正是它正在尋找。事實上,採用回顯查詢並嘗試使用類似phpMyAdmin的數據庫運行它。

但是,我注意到的是,您的邏輯表示,如果您在發佈的用戶名字段中未找到@,則在user_email列中查找用戶名,如果有@則查找它user_name字段。也許你的支票應該是:

if (strpos($_POST['username'],'@') !== false) { 
0

你的邏輯看起來顛倒了。

當沒有@的用戶名中,要查詢user_email
也有在你的代碼太多重複

if (strpos($_POST['username'],'@') === false) { 
    $username = mysql_real_escape_string($_POST['username']); 
    $sql = "SELECT * FROM users WHERE user_name='$username'" 
    $username_exists_check = 1; 
} else { 
    $email = mysql_real_escape_string($_POST['username']); 
    $sql = "SELECT * FROM users WHERE user_email='$email'" 
    $username_exists_check = 0; 
} 
$res = mysql_query($sql) or trigger_error(mysql_error().$sql); 
$user = mysql_fetch_array($res); 
if ($user) { 
    $ign_exists_check = !$username_exists_check; 
} else { 
    $ign_exists_check = $username_exists_check = 0; 
} 
var_dump($row,$username_exists_check,$ign_exists_check); 
相關問題