Проверьте базу данных SQL, если значение существует, а затем верните значение, если оно существует - PullRequest
4 голосов
/ 11 ноября 2011

Я довольно плохо знаком с 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.Спасибо

Ответы [ 3 ]

12 голосов
/ 11 ноября 2011

$ 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 и давно) функции mysql_ * действительно устарели.Очевидно, теперь вы можете использовать идентичные функции mysqli_ * (может быть, просто использовать поиск / замену), но большинство людей используют PDO.

4 голосов
/ 11 ноября 2011

Попробуйте это для своего SQL:

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

Примечание: вам следует рассмотреть возможность использования PDO .

0 голосов
/ 01 ноября 2015
<?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>
...