2013-12-23 83 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; 
    } 
} 
相关问题