2013-12-23 93 views
-1

我有一個很大的問題。我寫了一個簡單的$ _GET系統如何在頁面顯示結果

$query = mysql_query("SELECT * FROM `users`"); 

while ($row = mysql_fetch_array($query)) { 

    if($_GET['user'] == $row['user_seo']) { 

       echo 'user exists'; 

    } else { 
        echo 'No users found'; 
      } 

} 

如果用戶不存在於表它顯示「未找到用戶」,否則顯示未找到用戶的用戶存在,沒有找到用戶。 2次顯示「沒有找到用戶」,但用戶在數據庫表中存在該seo。謝謝。

數據庫屏幕http://prntscr.com/2ddqu4

+0

數據庫的請提供例子,以及如何在一個例子用戶數據在您循環遍歷所有用戶時形成。你最好在GET之前調用GET,然後用GET結果查詢數據庫。 –

+0

嘗試回顯$ _GET ['user']和$ row [user_seo']。也許它是大寫字母或修剪的問題。除此之外,你在這個代碼 – raygo

+1

中有很大的安全漏洞,堅持@jeroen的答案。一旦你獲得了PDO的支持,它會讓你的生活變得更加輕鬆。這是我能承諾的事情。 – thpl

回答

3

您遍歷所有用戶,所以你會得到多個消息。

您應該爲查詢添加WHERE條件,以僅檢查所需用戶,並使用預處理語句切換到PDO或mysqli。

喜歡的東西(在PDO):

$query = 'SELECT * FROM `users` WHERE `user_seo`=:user'; 
$db->prepare($query); 
$db->execute(array(':user' => $_GET['user'])); 
// etc. 
+1

我同意,廢除循環,只檢索想要的記錄 –

+1

而對於OP的信息看看爲什麼不應該使用mysql_ *功能:http://stackoverflow.com/questions/12859942/why-shouldnt-i- use-mysql-functions-in-php – thpl

+0

這是很好的版本,但我開始在mysql中編寫項目。我現在不能切換。謝謝。 – user3127605

0

嘗試用mysql_fetch_assoc

更換mysql_fetch_array此外,我會強烈建議您使用PDOmysqli和準備的語句

+0

我開始在mysql中編寫這個項目。而mysql_fetch_assoc不起作用。 – user3127605

-1

你最好可以使用SQL像這樣: SELECT * FROM users WHERE user_seo='".$_GET['user']."';而忘記循環所有的行。

編輯:但是更好地利用PDO的mysqli和準備好的發言

+1

我真的不認爲他不應該這樣做。您直接將GET參數傳遞給查詢,使其成爲SQL注入的一個簡單目標 – thpl

+0

這看起來不錯,以及如何在url中檢查它?謝謝 – user3127605

+0

@ThomasDavidPlat你是對的,但我正在按照他的方法 – MillaresRoo

0

安全找到mysqli的用戶:

if (isset($_GET['user'])) { 
    $user = $_GET['user']; 
    $connection = mysqli_connect($Host, $Username, $Password) or die(mysqli_error()); 
    mysqli_select_db($connection, $database) or die(mysqli_error()); 

    $user = mysqli_real_escape_string($connection, $user); 
    if (!is_numeric($user)) { 
     $user = "'$user'"; 
    } 

    $sql = "SELECT * FROM `users` WHERE `user_seo`=$user;"; 
    $result = mysqli_query($connection, $sql); 

    if ($result) { 
     $user = mysql_fetch_assoc($result)) { 
     if ($user) { 
      // User found 
      // Do something with info like: 
      $userName = $user['name']; 
     } else { 
      // User NOT found 
     } 
     mysql_free_result($result); 
    } else { 
     echo "Could not successfully run query ($sql) from DB: " . mysql_error(); 
     exit; 
    } 
} 
相關問題