我有一个大问题。我写了一个简单的$ _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。感谢。
答案 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
此外,我强烈建议您使用PDO
或mysqli
以及预备语句
答案 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 和准备好的陈述