逻辑PHP / SQL Server错误

|| 我有一个逻辑错误,我一生都无法弄清楚。问题是我写的这个非常基本的登录页面始终输出默认答案,而不是从表中进行选择。 我试图将
E_Type
中的值返回给php,在这种情况下,该值应返回A,但事实并非如此。 我究竟做错了什么? 码:
<?php
$server   = -Removed;
$login    = -Removed;            
$pass     = -Removed;        
$login    = $_POST[\'login\'];
$password = $_POST[\'password\'];
$table    = \'USERPASS\';
$table2   = \'EMPLOYEES\';
$res      = \'q\';

$dblink = @mssql_connect(-Removed) or die(\"Error 1\");
mssql_select_db(\'group5\', $dblink) or die( \"unable to select the database\");

$sqlquery = \"SELECT E_TYPE FROM USERPASS U, EMPLOYEES E WHERE U.EMPLOYEE_ID = E.EMPLOYEE_ID AND PASSWORD = \'$password\' AND USERNAME = \'$login\'\";
$res = mssql_query($sqlquery, $dblink) or die(\"Error5\");
$count = mssql_num_rows($res);

if($count==1)
{
    if ($res == \"A\" )
    {
        echo \"Success 1\";
    }
    else if ($res == \"B\" )
    {
        echo \"Success 2\";
    }
    else
    {
        echo \"Error...\";
    }
}
?>
    
已邀请:
您需要先获取结果。在
$res
中,您基本上只具有可以迭代结果的结果句柄。 使用
mssql_fetch_assoc
提取结果并访问它们(这将在所有结果行上循环):
while(($row = mssql_fetch_assoc($res)) !== FALSE) {
    echo $row[\'E_TYPE\'];
}
对于您的情况(如果只希望一行),请使用以下命令:
if($count == 1) {
    $row = mssql_fetch_assoc($res);
    if ($row[\'E_TYPE\'] == \"A\" )
    {
        echo \"Success 1\";
    }
    else if ($row[\'E_TYPE\'] == \"B\" )
    {
        echo \"Success 2\";
    }
    else {
        echo \"Error...\";
    }

}
    
mssql_query
返回MS SQL结果集,要获取返回值,必须首先从此结果集中获取行。参见http://www.php.net/manual/en/function.mssql-fetch-assoc.php和其他mssql_fetch函数     
<?php
$server = -Removed;
$login = -Removed;           
$pass = -Removed;        
$login=$_POST[\'login\'];
$password=$_POST[\'password\'];
$table= \'USERPASS\';
$table2=\'EMPLOYEES\';
$res=\'q\';

$dblink = @mssql_connect(-Removed) or die(\"Error 1\");
mssql_select_db(\'group5\', $dblink) or die( \"unable to select the database\");
$sqlquery = \"SELECT E_TYPE FROM USERPASS U, EMPLOYEES E WHERE U.EMPLOYEE_ID = E.EMPLOYEE_ID AND PASSWORD = \'$password\' AND USERNAME = \'$login\'\";
$res = mssql_query($sqlquery, $dblink) or die(\"Error5\");
$count=mssql_num_rows($res);
    if(1 == $count){
        $row=mssql_fetch_assoc($res);//fetch row from database
        switch($row[\'E_TYPE\']) {
            case \"A\":
                echo \"Success 1\"; 
                break;
            case \"B\":
                echo \"Success 2\"; 
                break;
            default:
                echo \"Error...\"; 
                break;
        }
    }
}
mssql_free_result($res);
?>
您应该了解select ... case语句。 我唯一能看到的就是你的角色。数据库可能区分大小写,也可能不区分大小写。 您还缺少某些有时会影响结果的内容:mysql_free_result()。 您通常应该对获取行而不是if进行一会儿陈述,因为可能会有多于1行。 我通常将常量放在比较运算符的前面,并将变量放在可能的右边,这是有道理的,因为如果在任何情况下由于缺少=而使编译器成为赋值,编译器都会捕获该错误。     

要回复问题请先登录注册