【问题标题】:Check SQL database if value exists and then return value if it does [duplicate]检查 SQL 数据库是否存在值,如果存在则返回值 [重复]
【发布时间】:2011-12-26 16:10:39
【问题描述】:

我对 php 和 SQL 都很陌生。我有一个登录页面,我在其中询问用户的用户名和密码。我想搜索我为用户名和密码创建的数据库,看看它们是否存在。数据库表有两列,用户名和密码。我不太关心安全性,所以一个简单的脚本就可以了。但我确实希望有一天能够对其进行扩展,因此我正在使用数据库,因为目前我只是在 php 中使用一个数组来存储用户名和密码。

我目前正在尝试使此代码正常工作,但没有得到我需要的结果。

$user_name = "db_username";
$password = "db_password";
$database = "db_name";
$server = "db_server";



$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database, $db_handle);

if ($db_found) {
$result =mysql_query("SELECT 1 FROM my_table WHERE Username = $username");
if ($result>0)

    {
        echo 'Username and Password Found'; 
    }
else
    {
    echo 'Username and Password NOT Found';
    }
}
else {
print "Database NOT Found.";
mysql_close($db_handle);
}

无论用户名是否在其中,这总是返回Username and Password Found。打印$result 时,我得到Resource id #2。谢谢你

【问题讨论】:

  • 如果(我的回答解决了你的问题){ 你能给它打上绿色的复选标记吗? } else { 如果它仍然不起作用,请告诉我; }
  • 抱歉,直到今天早上我才能测试它。非常感谢。我确实必须在 $username 变量周围添加撇号,但除此之外,它工作得很好。非常感谢。
  • 很高兴我能帮上忙!我会在我的答案中添加撇号和反引号,以供任何未来的读者阅读。

标签: php sql database passwords


【解决方案1】:

$result 我认为即使结果集包含零行也会评估为 true。根据手册,它仅在错误时返回布尔值 false。使用 mysql_num_rows 来确定您是否确实在查询中找到了任何内容。

if ($db_found) {
$result =mysql_query("SELECT 1 FROM my_table WHERE `Username` = '$username'");
if ($result && mysql_num_rows($result) > 0)

    {
        echo 'Username and Password Found'; 
    }
else
    {
    echo 'Username and Password NOT Found';
    }
}
else {
print "Database NOT Found.";
mysql_close($db_handle);
}

编辑: 当然,截至目前(2013 年 11 月,以及很久以前),mysql_* 函数确实已被弃用。显然您现在可以使用相同的 mysqli_* 函数(也许只使用查找/替换),但大多数人都在使用 PDO。

【讨论】:

    【解决方案2】:

    为你的 SQL 试试这个:

    $result = mysql_query("SELECT 1 FROM my_table WHERE Username = " . mysql_real_escape_string($username));
    

    注意:您应该考虑使用PDO

    【讨论】:

    • 应该使用 mysql_real_escape_string()(需要与数据库建立开放连接)而不是 mysql_escape_string()。我不知道你所说的“mysql接口”被弃用是什么意思......
    • @ButtleButkus:你是对的,我阅读了弃用消息并认为它指的是整个 mysql_* 库。更新帖子。
    【解决方案3】:
    <?php
    $user=$_POST["user"];
    $pass=$_POST["pass"];
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "interior_design";
    $db_handle = mysql_connect($servername,$username,$password);
    $db_found = mysql_select_db($dbname,$db_handle);
    if($db_found)
    {
    $result = mysql_query("SELECT ssn,fname FROM admin WHERE ssn='$pass' and fname='$user'");
    if ($result && mysql_num_rows($result) > 0)
        {
            echo 'Username and Password Found'; 
        //header( 'Location: index.html' ) ;
    
        }
    else
        {
        echo 'Username and Password NOT Found';
        echo $pass;
        echo $user;``
        }
    }
    
    else{
    echo 'db nt found';   
    
    mysql_close($db_hanle);
    }
    
    ?>
    <html>
    <body>
    <a href="login.html"><h2>LOGIN</h2></a>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-24
      • 2020-02-20
      • 2021-03-26
      • 1970-01-01
      • 2021-10-10
      • 2016-02-15
      • 2016-03-01
      • 1970-01-01
      相关资源
      最近更新 更多