如何仅在页面中显示结果

时间:2013-12-23 15:31:01

标签: php

我有一个大问题。我写了一个简单的$ _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

4 个答案:

答案 0 :(得分:3)

您正在循环所有用户,因此您将收到多条消息。

您应该在查询中添加WHERE条件,以仅检查所需用户,并使用预准备语句切换到PDO或mysqli。

像(PDO中):

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

答案 1 :(得分:0)

尝试将mysql_fetch_array替换为mysql_fetch_assoc

此外,我强烈建议您使用PDOmysqli以及预备语句

答案 2 :(得分: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;
    }
}

答案 3 :(得分:-1)

你最好可以使用这样的sql: SELECT * FROM users WHERE user_seo='".$_GET['user']."';忘记循环所有行。

编辑:但最好使用 PDO Mysqli 和准备好的陈述