Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在一个数据库中使用两个表的不同登录方式_Php_Mysql - Fatal编程技术网

Php 在一个数据库中使用两个表的不同登录方式

Php 在一个数据库中使用两个表的不同登录方式,php,mysql,Php,Mysql,嗨,我登录了一个网站 我使用数据库中的1个帐户表成功地创建了一个帐户 现在我为另一个帐户制作了另一张表。这两个表的属性不同,这就是我将它们分开的原因 通过使用此算法,我很难在第二个日志中记录时间 输入的登录名和密码来自另一个使用HTML表单的页面 <?php //Start session session_start(); //Include database connection details require_once("config.php");

嗨,我登录了一个网站

我使用数据库中的1个帐户表成功地创建了一个帐户

现在我为另一个帐户制作了另一张表。这两个表的属性不同,这就是我将它们分开的原因

通过使用此算法,我很难在第二个日志中记录时间

输入的登录名和密码来自另一个使用HTML表单的页面

<?php
    //Start session
    session_start();

    //Include database connection details
    require_once("config.php");
    require("clean.php");

    //Array to store validation errors
    $errmsg_arr = array();

    //Validation error flag
    $errflag = false;

    //Sanitize the POST values
    $login = clean($_POST['login']);
    $password = clean($_POST['password']);

    //Input Validations
    if($login == '') {
        $errmsg_arr[] = 'Login ID missing';
        $errflag = true;
    }
    if($password == '') {
        $errmsg_arr[] = 'Password missing';
        $errflag = true;
    }

    //If there are input validations, redirect back to the login form
    if($errflag) {
        $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
        session_write_close();
        header("location: login-form.php");
        exit();
    }

    //Create query for patient
    $qry="SELECT * FROM user_info WHERE login='$login' AND password='".md5($password)."'";
    $result=mysql_query($qry);

//Check whether the query was successful or not
    if($result) {
        if(mysql_num_rows($result) == 1) {
            //Login Successful User
            session_regenerate_id();
            $user_info = mysql_fetch_assoc($result);
            $_SESSION['SESS_MEMBER_ID']  = $user_info['ID_NO'];
            $_SESSION['SESS_FIRST_NAME'] = $user_info['FNAME'];
            $_SESSION['SESS_admin']      = $user_info['admin'];
            $_SESSION['SESS_itResult']      = $user_info['itResult'];
            //print "Login a success!";
            session_write_close();
            header("location: member-index.php");
            exit();
        }
        else {
                //Create query for 
                $qry="SELECT * FROM specialist_info WHERE spec_username='$login' AND spec_password='".md5($password)."'";
                $result2=mysql_query($qry);

                //Check whether the query was successful or not
                if($result2) {

                    if(mysql_num_rows($result2) == 1) {
                        //Login Successful User

                        session_regenerate_id();
                        $specialist_info = mysql_fetch_assoc($result);
                        $_SESSION['SESS_MEMBER_ID']  = $specialist_info['spec_id'];
                        $_SESSION['SESS_FIRST_NAME'] = $specialist_info['name'];
                        $_SESSION['SESS_admin'] = 1;

                        //print "Login a success!";
                        session_write_close();
                        header("location: member-index.php");
                        exit();
                        }

                    else {
                        //Login failed
                        header("location: login-failed.php");
                        exit();
                        }
                    }
            }
    }
        else {
        die("Query failed");
    }
}
?>

我能够登录第一个(意味着PHP和MySQL之间有连接)帐户,但是第二个我不能

从我所了解的情况来看,我无法进入这一关。“如果(mysql_num_行($result2)==1)” 我知道数据库的第二个表中有数据,因为我检查了它(有MD5 yes)


也许我的逻辑是错的。建议?:D谢谢

我不确定代码是否正确(稍后将进行审查),但您可以尝试重构您的表,这样您就有了一个包含用户属性的单独表,这样您就可以动态地处理属性,而不必每次有不同类型的用户时都创建不同的表

编辑: 尝试:
var\u dump(mysql\u num\u rows($result2))
如果显示返回值为false,则查询有问题,否则它与任何行都不匹配

现在我为另一个帐户制作了另一张表。这两个表的属性不同,这就是我将它们分开的原因

没有

它们都是为了相同的目的-您应该使用一个表,如果您不能有效地适应单个表中两种类型的实体之间的差异,请添加1或2个具有1:1非义务关系的表

但现在,即使有这种混乱且潜在危险的结构,您也不需要2个查询和所有代码:

SELECT 'std' AS src, id_no, fname, admin, itResult
FROM user_info 
WHERE login='$login' 
AND password='".md5($password)."'
UNION
SELECT 'ext' AS src, spec_id AS id_no, name AS fname, 1 AS admin, NULL AS iResult
FROM specialist_info 
WHERE spec_username='$login' 
AND spec_password='".md5($password)
很明显,如果你的用户名/密码都是相同的,这会中断,但实际上是一样的

if(mysql_num_rows($result) == 1) {
无论如何都是多余的-您只需检查

if ($row=mysql_fetch_assoc($result)) {

您发布的许多代码都与您描述的问题无关,但是完全没有注释/日志记录/调试为我们提供了一点解决问题的方法。这两个组合强烈表明,在这里偷猎之前,你没有费心清理不相关的部分。如果你可能包括一些调试/记录功能,你可能已经自己解决了。

如果答案是有帮助的,或者更好的,解决你的问题,请考虑接受或投票。var_dump显示了什么?不,结果显示函数返回一个值为0的整数。这意味着表中没有匹配的行。如果var_dump的结果是bool(false),则表示查询有问题。现在,您应该尝试找出语法正确的查询与任何行都不匹配的原因。尝试打印查询并将其与数据库匹配。