2016-03-07 118 views
-1

我试图插入一个会话和回声如果登录名,密码和状态是1,所以如果它的正确,那么它的会话被插入,如果错误然后回显消息,但查询失败,将不胜感激任何帮助!查询失败

if(isset($submit)) 
    { 

     $query=mysql_query("select * from mst_user where login='$loginid' and pass='$pass' AND status IS 1"); 
     $result_check_credentials = mysql_query($query); 
     if(!$result_check_credentials){//If the QUery Failed 
      echo 'Query Failed '; 
     } 

     if (@mysql_num_rows($result_check_credentials) == 1) 
      { 

       $_SESSION[login]=$loginid; 
       echo " working"; 
      } 
     else 
      { 
       echo 'sads'; 
      } 
    } 
if (isset($_SESSION[login])) 
    { 
     echo 'welcome' 
      } 
exit; 
?> 
+1

那么,查询是开放的SQL注入,所以它可能是失败的任何原因。使用'mysql_error()'来确定它失败的原因。 (另外,考虑一下'mysqli_ *'或'PDO',因为'mysql_ *'很长时间以来一直弃用。) – David

+0

谢谢Mr.David,我应该在哪里放mysql_error()? – user3184290

+0

可能在“查询失败”条件块内部,因为那里会出现错误报告。 – David

回答

0

status IS 1应该是status = 1IS只能用作IS NULLIS NOT NULL的一部分,它不是通用的相等运算符。

另一个问题是这样的:

$result_check_credentials = mysql_query($query); 

mysql_query()的参数必须是一个字符串,但$query是调用mysql_query(),所以您不必再调用它的结果。改变以前行:

$query = "select * from mst_user where login='$loginid' and pass='$pass' AND status = 1"; 

其他问题:

  • 当查询失败,你应该退出的代码,而不是通过降低到调用mysql_num_rows()的代码。

  • $_SESSION[login]应该是$_SESSION['login']

+0

先生试过,查询失败 – user3184290

+0

'echo mysql_error()'说错误是什么? – Barmar

+0

未选择数据库 – user3184290

0

我打算假设你还在学习,但请切换到PDO甚至是mysqli。那里有很多教程。

但是要回答你的问题是$查询定义?

ex: $ query = mysql_connect('example.com:3307','mysql_user','mysql_password');

+0

是的,先生,这是 – user3184290

0

地球上你在做什么?:这里

$query = mysql_query("select * from mst_user where login='$loginid' and pass='$pass' AND status IS 1"); 
$result_check_credentials = mysql_query($query); 

你执行查询,然后尝试重新执行结果查询

只需执行一次查询。返回的值将是该查询的结果。在这种情况下,这将是来自mst_user表的零个或多个记录。 (或false如果查询失败。)

+0

尝试过,不工作得太过先生 – user3184290

+0

@ user3184290:你的代码看起来有多个错误,这里发布了各种各样的答案。此外,还有很多其他的东西*可能会在您的代码中出现错误,而不是出现在问题中发布的代码中。堆栈溢出无法为您调试您的代码。你应该从一些关于PHP/MySQL的入门教程开始。只是一遍又一遍地重复“堆栈溢出不起作用”不会让你感觉到任何地方。 – David