2012-03-06 58 views
1

我是編程領域的初學者。如何使用php代碼將數據庫表中的值賦給數組?

我的概念只是將用戶名和密碼檢查後,從登錄頁面移動到主頁。我有一個數據庫表的字段'user_id'&'密碼'。所以我想從表中獲取數據到數組,然後想要將它與用戶輸入的值進行比較......如何以最簡單的方式實現?

+1

你可以通過使用mysql_fech_array()。 – 2012-03-06 10:15:07

+0

學習如何使用'if語句',然後學習如何從MySQL獲取數據,您已經學會了'重定向',然後將它們放在一起。 – MrCode 2012-03-06 10:20:38

+0

$ sql =「選擇user_id,來自user_details的密碼」; $ result = mysql_query($ sql,$ con); if(!$ result) {'error:'。mysql_error()); } $ row = mysql_fetch_array($ result,MYSQL_BOTH); 我的代碼是這樣的..然後,我想把'行'的內容與輸入的文本字段進行比較..我如何獲得所有值與使用循環...比較?是否可以檢查行[0]行[1]等... – arunrc 2012-03-06 10:38:06

回答

0

我總是用

$query = "..."; 
$sql = mysql_query($query); 
while($row = mysql_fetch_assoc($sql)) { 
    $user_id = $row['user_id']; 
    // ... 
} 

我認爲應該更好地工作,你得到一個關聯數組,這樣你就可以用字段名工作。 請注意,如果您選擇SUM(*),則必須將$row['SUM(*)']或通過SQL爲其命名。

+0

感謝您的回覆... – arunrc 2012-03-06 10:51:16

+0

或做'while(list($ username,$ password,$ otherfield)= mysql_fetch_array($ sql) ){',這更簡單,因爲你可以在循環中使用'$ username','$ password'等變量 – giorgio 2012-03-06 11:48:53

0

雖然您已經展示了很少的研究,而且您的問題非常廣泛,但我會告訴您一個可能會給您一些線索的例子。

$username = mysql_real_escape_string($_POST['username']); //escaping the string, will use it in a query 
$password = $_POST['password']; 

$result = mysql_query("SELECT password FROM users WHERE username = '$username'"); 

if (mysql_num_rows($result) == 1) { // Expecting one result 
    $userdata = mysql_fetch_array($result); 
    if ($password == $userdata['password']) { 
     // USER IS AUTHORISED 
    } else { 
     // USER IS NOT AUTHORISED 
    } 
} 

這是一個簡單的例子。

需要考慮的事情:

  1. 雖然我沒有在上面的例子中,以簡化的東西,不以明文存儲密碼的數據庫 - 存儲MD5哈希來代替。您可以使用md5("string to hash")生成散列。如果你需要幫助,那就開始另一個問題。
  2. 授權用戶後,您可以「記住」使用PHP會話。再次,如果你需要幫助,請提出另一個問題。
+0

感謝您的支持....... – arunrc 2012-03-06 10:58:05

-1

試試這個

// HTML

<form method="post"> 
<input type="text" name="username" /> 
<input type="password" name="password" /> 
<input type="submit" name="login" value="login"/> 
</form> 

// PHP

if(isset($_POST['login'])) 
{ 
    $username=$_POST['username']; 
    $password=$_POST['password']; 

    $username=mysql_real_escape_string($username); 
    $password=mysql_real_escape_string($password); 
    $query = "select username,password from tableName 
      where username='$username' and password='$password'"; 
$sql = mysql_query($query); 

if(mysql_num_rows($sql) == 1) 
{ 
    // Login success save username in session redirect to homepage 
    header("location:homepage.php"); 
    exit(); 
} 
else 
{ 
    // Display error message 
} 
} 
+0

您的代碼中有一些錯誤。在您的HTML中,您的值缺少引號。在你的PHP中,'$ _POST ['submit']'沒有設置,'mysql_real_escape_strings()'應該是'mysql_real_escape_string()',你需要把你的變量放在你的查詢中的單引號中,例如'username ='$ username''。如果您只檢查行數,則不需要選擇用戶名和密碼(以節省內存)。 – MMM 2012-03-06 10:42:52

+0

Thanks for this .... – arunrc 2012-03-06 11:02:05

0
$username="username"; 
    $password="password"; 
    //Specify MySQL database to connect to 
    $database="database"; 
    //Create connection and select the appropriate database 
    mysql_connect("localhost",$username,$password); 
    @mysql_select_db($database) or die("Unable to select database"); 

    //Get the username and password from posted form 
    $username = mysql_real_escape_string($_POST['username']); 
    $password = mysql_real_escape_string($_POST['password']); 

    //Build the query to look for users that exist with that username/password combination 
    //Here I'm using the users table within my database 
    $query = "SELECT * FROM users where username=\"$username\" and password = \"$password\" "; 
    //Retrieve the results of the query, and also aquire the number of records returned 
    $result = mysql_query($query); 
    $num = mysql_numrows($result); 

    //Check to see how many records are returned 
    if ($num>0) 
    { 
     //User login was successful 

     echo 'success login'; 
    } else { 
     //Login was unsuccessful 
     echo 'user name not found'; 
    } 
+0

SQL注入城市 – MrCode 2012-03-06 10:47:22

+0

感謝您的代碼...喜歡這種方法... :) – arunrc 2012-03-06 10:52:54

+0

@arunrc:請注意使用此代碼,因爲它具有SQL注入的可靠性 – MMM 2012-03-06 10:59:22