2016-03-07 231 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