gpt4 book ai didi

php - Mysql查询IFEXIST不返回任何结果

转载 作者:行者123 更新时间:2023-12-01 00:21:58 26 4
gpt4 key购买 nike

我正在尝试用 PHP 创建一个登录表单。我正在传递用户输入的用户名和密码,并检查数据库中存在的天气。

我已经完成了编码,但是 IF EXIST 查询没有返回任何结果。

谁能帮我解决这个问题。或者给我一个替代的想法..谢谢...

        <?php

$name= $_POST["usname"];
$pass = $_POST ["password"];

$connection = mysqli_connect("localhost","sathya","sathya","learning1");
//mysqli_query($connection,"INSERT INTO user (name, password) VALUES ('".$name."', '".$pass."')");
$result = mysqli_query($connection, "IF EXISTS(SELECT * FROM user WHERE name='".$name."'AND password='".$pass."')");
mysqli_close($connection);

echo "result ".$result;

if($result == True){

header("Location: logedin.php");
//redirect_to('logedin.php');
}else{

echo "not logged in installed";
}


?>

最佳答案

这是一个迟到的答案,但您需要注意一些事项。 (不脱离已接受的答案)。

您将需要使用 if(mysqli_num_rows($result) > 0),因为如果用户名匹配而密码不匹配,您的查询将始终为 TRUE,反之亦然。

你最好使用 mysqli_num_rows()而不是使用 if($result == True)

旁注:请参阅我关于密码存储和 SQL 注入(inject)的脚注。

<?php
$DB_HOST = "xxx";
$DB_NAME = "xxx";
$DB_PASS = "xxx";
$DB_USER = "xxx";

$db = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($db->connect_errno > 0) {
die('Connection failed [' . $db->connect_error . ']');
}

$name = $_POST["usname"]; // See footnotes about this
$pass = $_POST ["password"]; // See footnotes about this

$result = mysqli_query($db, "SELECT EXISTS(SELECT * FROM users WHERE username='".$name."' AND password='".$pass."')");

// Works just as well
// $result = mysqli_query($db, "SELECT * FROM users WHERE username='".$name."' AND password='".$pass."'");

if(mysqli_num_rows($result) > 0){
echo "Both match.";
}

else{
echo "Sorry, there was not a perfect match.";
}

脚注:

您还可以使用:

$result = mysqli_query($db, "SELECT * FROM  users  WHERE username='".$name."' AND password='".$pass."'");

它对 SELECT EXISTS(SELECT * 使用更少的字符执行相同的操作。

或选择实际列:

$result = mysqli_query($db, "SELECT username, password FROM  users  WHERE username='".$name."' AND password='".$pass."'");

我建议您使用准备好的语句并清理您的输入。不这样做会让你敞开心扉 SQL injection .

这里有一些关于 (mysqli) 准备好的语句的教程,您可以学习和尝试:

这里有一些关于 PDO 的教程:


密码

我还注意到您以明文形式存储密码。不建议这样做。

使用以下之一:

其他链接:

关于php - Mysql查询IFEXIST不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23265566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com