2014-11-15 45 views
0

請有人幫我理解爲什麼echo命令'不正確的會員號碼,請再試一次。'不工作?爲什麼不執行這個回顯命令?

其他一切似乎都運作良好。

<?php 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'DBNAME'); 
define('DB_USER', 'USER'); 
define('DB_PASSWORD', 'PASS'); 
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
$db = mysql_select_db(DB_NAME, $con) or die("Failed to connect to MySQL: " . mysql_error()); 
$mem_no = $_POST['mem_no']; 

function SignIn() 
{ 
    session_start(); 
    if (!empty($_POST['mem_no'])) { 
     $query = mysql_query("SELECT * FROM members where mem_no = '$_POST[mem_no]'") or die(mysql_error()); 
     $row = mysql_fetch_array($query) or die(mysql_error()); 
     if (!empty($row['mem_no'])) { 
      $_SESSION['mem_no'] = $row['mem_no']; 
      header("Location: " . $_POST['cat_link']); 
     } else { 
      echo "Incorrect Membership Number, please try again."; 
     } // This line is not executing 
    } else { 
     echo "Please go back and enter a Membership Number"; 
    } 
} 

if (isset($_POST['submit'])) { 
    SignIn(); 
} 

HTML表單如下:

<form method="post" action="/check.php"> 
<p>Membership No.</p> 
<input name="mem_no" type="text" id="mem_no"> 
<input name="cat_link" type="hidden" value="https://www.redirectlink.com"> 
<input name="submit" type="submit" id="submit" value="AELP Member Rate"> 
</form> 

鏈接進行測試:如果你想測試https://www.eiseverywhere.com/ehome/index.php?eventid=106953&tabid=239372和有效的 '會員編號' 是1234。

將表格留空會給出正確的錯誤信息並輸入一個有效的數字可以正確地重定向我,但輸入無效的數字(例如9999)不會給我正確的輸出信息。

非常感謝您的回覆。

問候, 灰

+0

@ Rizier123它們屬於兩個不同的'if's,這是很難看到因爲這段代碼根本沒有縮進。 – hobbs

+0

不使用mysql_它已被棄用,並且很快就會被刪除。你應該使用mysqli_或者最好是PDO – DevDonkey

回答

0

你需要計算行,因爲即使當一個SQL查詢沒有結果,它不是空的。所以算數。

function SignIn() 
{ 
    session_start(); 
    if (!empty($_POST['mem_no'])) { 
     $query = mysql_query("SELECT * FROM members where mem_no = '". $_POST['mem_no'] ."'") or die(mysql_error()); 

     #count rows 
     $count = mysql_num_rows($query); 
     $row = mysql_fetch_array($query) or die(mysql_error()); 

     #check count 
     if ($count != 0) { 
      $_SESSION['mem_no'] = $row['mem_no']; 
      header("Location: " . $_POST['cat_link']); 
     } else { 
      echo "Incorrect Membership Number, please try again."; 
     } 

    } else { 
     echo "Please go back and enter a Membership Number"; 
    } 
} 

只是一個小提醒。 mysql_類PHP被棄用,並將在未來的版本中刪除,我建議你要使用mysqli_PDO

+0

這個還沒解決嗎? –

+0

它會給出某種錯誤嗎?如果不是,你可以檢查你的'顯示錯誤'設置,以確保它們已啓用。 –

-2

工作,這沒有道理放兩個else語句連勝。就拿最後else塊從內,如果阻止

if(!empty($_POST['mem_no'])) { 
     //code 

     }else{ 

      echo "Please go back and enter a Membership Number"; 
     } 

應該執行就好

+0

這還沒解決嗎? –

+0

什麼是輸出。它是否仍然像以前一樣工作 – Laser

+0

是的,和以前一樣。 –

0

你的腳本是很難調試有以下幾個原因:

  1. 它不縮進(我已經修復對於你的問題)
  2. 你正在使用不推薦的mysql函數(見this)。切換到PDO或mysqli。
  3. 腳本中有幾個退出點。每次你打電話給數據庫時,如果你失敗了,你就會「死」。這不好

無論如何,我懷疑其中一個「死」使腳本過早地結束。而不是使用死亡,自己處理錯誤。

+0

我正在努力從mysql到mysql或PDO的轉換,有沒有在任何地方的傻瓜指南? 另外我該如何交換退出點來處理它們呢? –

0

我認爲這應該工作:

(!也把錯誤頂部報告)

<?php 
    error_reporting(E_ALL); 
    ini_set("display_errors", 1); 
?> 

<?php 
    session_start(); 

    define('DB_HOST', 'localhost'); 
    define('DB_NAME', 'DBNAME'); 
    define('DB_USER', 'USER'); 
    define('DB_PASSWORD', 'PASS'); 

    $con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
    //$db = mysql_select_db(DB_NAME, $con) or die("Failed to connect to MySQL: " . mysql_error()); //Useless 

    $mem_no = $_POST['mem_no']; 

    function SignIn() { 

     if (!empty($_POST['mem_no'])) { 
      $query = mysql_query("SELECT * FROM members WHERE mem_no = '" . $_POST['mem_no'] . "'") or die(mysql_error()); 
      $row = mysql_fetch_array($query) or die(mysql_error()); 
      $count = mysql_num_rows($query); 

      if ($count >= 1) { 
       $_SESSION['mem_no'] = $row['mem_no']; 
       header("Location: " . $_POST['cat_link']); 
      } else { 
       echo "Incorrect Membership Number, please try again."; 
      } // This line is not executing 
     } else { 
      echo "Please go back and enter a Membership Number"; 
     } 
    } 

    if (isset($_POST['submit'])) { 
     SignIn(); 
    } 
?> 
+0

爲什麼數據庫選擇無用?我的答案有什麼區別? –

+0

這仍然不起作用... –