2013-05-12 157 views
1

我的腳本應該將用戶登錄到我的數據庫中。無法執行SELECT查詢

它通過檢查用戶名和密碼是否匹配對員工表中的行執行此操作。

如果發現用戶名和密碼,它存在存儲在cookie中的用戶名和密碼。

是我得到的問題是,沒有被登錄的用戶。

已通過了以下變量在點擊按鈕

$行有下列值回聲方法鑑定= 0 $用戶名=無論是在用戶名字段的形式

這似乎表明,有一些錯誤的查詢

<?php 

$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = ''; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die      ('Error connecting to mysql'); 

$dbname = 'the_shop'; 
mysql_select_db($dbname); 

if(isset($_GET['submit'])) 
{ 
    $username = $_GET['username']; 
    $password = md5($_GET['password']); 
    echo "$username + $password <br />"; 

    // insert user into db 
// $sql = "INSERT INTO `logindb`.`users` (`id`, `username`, `password`) VALUES (NULL, '".$username."', '".$password."');"; 
// echo $sql; 
// $result = mysql_query($sql); 

    // getting user from db 
    $query = "SELECT Username, Password FROM staff WHERE `Username`='.$username.'"; 
    $result = mysql_query($query) 
    or die(mysql_error()); 
    $num=mysql_numrows($result); 
    echo $num; 
    if($num <= 0) { 
    echo "login not successful"; 
    echo "$username"; 
} 
else 
{ 
    $_SESSION['username'] = '$username'; 
    $_SESSION['password'] = '$password'; 
//header("Location:Admin_Control_panel.php"); 
} 
} 
?> 
+1

[**在新的代碼,請不要使用'mysql_ *'功能**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。 – Kermit 2013-05-12 20:24:58

+0

'mysql_num_rows($ result);'不'mysql_numrows',但是您應該使用'mysqli'。 – 2013-05-12 20:25:06

+1

你爲什麼只檢查用戶名,而不是密碼? – 2013-05-12 20:25:59

回答

3

對於初學者您$query在有不想要的字符(.)。

"SELECT Username, Password FROM staff WHERE `Username`='.$username.'" 
                 ^  ^

應該是。

"SELECT Username, Password FROM staff WHERE `Username`= '$username'" 

沒有點。

3

這條線:

$query = "SELECT Username, Password FROM staff WHERE `Username`='.$username.'"; 

需要是:

$query = "SELECT Username, Password FROM staff WHERE `Username`='$username'"; 

沒有必要字符串連接在一起,因爲你正在使用double-quotesPHP是解析雙引號字符串中的$值。

1
$query = "SELECT Username, Password FROM staff WHERE `Username`='$username'"; 
2

您的查詢應該是:

$query = 'SELECT Username, Password FROM staff WHERE Username = ' . $username; 

我建議尋找到PDO(PHP數據對象)來替代你正在使用和參數化的變量的方法。

http://php.net/manual/en/book.pdo.php

+0

我明年想做這件事的每一個打算,當我在我的最後一年項目中使用php和mysql,但我現在沒有時間去學習它,因爲我的assigment需要在幾天內:) – 2013-05-12 20:44:25

+0

我知道那種感覺:)祝你好運 – mattfryercom 2013-05-12 21:27:15