2013-03-08 167 views
-2

我已经做了数据库列电子邮件,名字,姓氏,密码..等等数据
我的登录页面使用电子邮件和密码用于登录
我想要检索的名字列在键入的名字同一行作为电子邮件
我想知道怎么做
我的代码如下所示: -
检索MySQL数据库

$query=mysql_query("SELECT * FROM Users WHERE email='$email' AND 
`password`='$encrypted_pass' "); 

在此之后,我希望能够给一个变量分配给姓氏,所以我可以创建一个会话连同登录

+4

[**在新的代码,请不要使用'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-03-08 01:31:54

+0

我建议你需要一个很好的教程。这可能是一个网站,也许是一个谷歌搜索“php mysql教程”,或一本好书。你当地的公共图书馆可能有一些。 – 2013-03-08 01:36:28

回答

0

我认为这涵盖了你要求的一切。开始一个会话,检查它是否好,为我们的发布数据设置几个变量,做一些数据验证,设置查询,查询数据库,检查结果,在会话中设置var lastname。

<?php 
header('Content-type: text/html'); 

    session_start(); 
    if (session_id() === '') { 
     echo 'session_id is null!'; 
     exit; 
    } 
    $myemail = null; 
    $mypassword = null; 

    if (isset($_POST['Submit']) == true) { 
     //assuming you have a db connection 
     //mysql_connect($host, $user, $password) || die(mysql_error()); 
     //mysql_select_db($database) || die(mysql_error()); 

    if ((isset($_POST["username"]) === false)|| 
      (isset($_POST["password"]) === false)) { 
      echo 'Please fill in all fields'; 
      exit; 
     } else { 
      // get the post data 
      $myemail = ($_POST["username"]); 
      $mypassword = ($_POST["password"]); 
     } 

    // check the form in database 
    $sql = "SELECT * FROM Users WHERE email = '".$myemail."' 
      AND password = '".$mypassword."'"; 
    $result = mysql_query($sql); 
    $count = mysql_num_rows($result); 

    $_SESSION['loggedin'] = false; 
    if ($count === 1) { 
     $userrecord = mysql_fetch_array($result); 
     $_SESSION['username'] = $userrecord['username']; 
     $_SESSION['password'] = $userrecord['password']; 
     $_SESSION['loggedin'] = true; 
     $_SESSION['lastname'] = $userrecord['lastname']; 
     // assign last name to a session var 

     echo 'You have been logged in successfully"; 
    } else { 
     echo 'Wrong username or password'; 
     exit; 
    } 
} else { 
    echo "No form post detected.<br><br>"; 
} 
?> 

这里有一些基本的东西使用Mysqli,因为mysql_命令已被弃用。再次,它使用一些常用名称,以便相应地进行调整

/********************************/ 
    // using mysqli (untested but should work) 
    /********************************/ 

    $mysqli = new mysqli("localhost", "dbuser", "dbpassword", "default_dbname"); 

    /* check connection */ 
    if (mysqli_connect_errno()) { 
     printf("Connect failed: %s\n", mysqli_connect_error()); 
     exit(); 
    } 

    // ecsape the query params 
    $myemail = $mysqli->real_escape_string($myemail); 
    $mypassword = $mysqli->real_escape_string($mypassword); 

    if ($mysqli->query("SELECT * FROM Users WHERE email = '$myemail' 
         AND password = '$mypassword'")) { 
     printf("%d Rows returned.\n", $mysqli->affected_rows); 

    // here is where you can set the $_SESSION vars 
    // and do any other work you want to do on login. 

    } 


    $mysqli->close(); 
    /********************************/ 
    //end mysqli 
    /********************************/ 

最后一件事。获取GitHub.com存储库设置,以便您可以轻松回滚到以前的版本。这真的是一个必须有国际海事组织。

+0

array(3){[“name”] => NULL [“lastname”] => NULL [“logged_in”] => string(9)“logged in”}您已成功登录 我试过这个 - >如果($计数=== 1){ \t $ userrecord = mysql_fetch_array($结果); \t session_start(); $ _SESSION ['lastname'] = $ userrecord ['lastname']; \t $ _SESSION [ 'LOGGED_IN'] = '登录'; \t var_dump($ _ SESSION); echo'您已成功登录'; } – Tomer 2013-03-08 02:15:23

+0

我在那里留下了var_dump oops。这是在查询中为名称使用常用值的示例代码等,您是否检查一切是否正确?数组值为空,因为查询没有返回任何内容(如果它实际上运行)。没有必要移动session_start或代码的任何其他部分来尝试这个或那个。如果您的表单正确发布并且我使用的名称是正确的,代码将起作用。我在代码中评论了你的数据库连接,并假定你有一个连接打开,是吗? – 2013-03-08 02:54:35

+0

工作..谢谢!我可以收到你的电子邮件吗,所以当我遇到麻烦时我可以请你帮忙吗?我是一个14岁的新手 – Tomer 2013-03-08 04:00:37

1

然后你在列列表中指定列:

SELECT LastName 
FROM Users 
WHERE email = '$email' 
... 

然后,您需要获取结果集将其分配给一个变量。

1

mysql_职能正式废弃,不再维护/使用安全。

你应该使用PHP的PDO,而不是因为它是一个更安全,更面向对象的方法。 在DB_NAME,DB_USER_NAME和DB_USER_PASS只需填写您的特定凭据,此代码应为你工作。

$database = new PDO('mysql:host=localhost;dbname=DB_NAME;charset=UTF-8', 'DB_USER_NAME', 'DB_USER_PASS'); 

$query = $database->prepare("SELECT * FROM Users WHERE `email` = ? AND `password` = ? "); 
$query->bindValue(1, $email); 
$query->bindValue(2, $encrypted_pass); 
$query->execute(); 

if($query->rowCount() > 0) { # If rows are found for query 

    $result = $query->fetch(PDO::FETCH_ASSOC); 
    echo $result[ 'LastName' ]; # <-- The LastName field you were looking for! 

} 
else { echo "No Rows Returned!"; } 

对于PHP PDO的更多信息,请参阅http://www.php.net/manual/en/book.pdo.php