-2

我已经创建了一个包含电子邮件、名字、姓氏、密码等列的数据库
我的登录页面使用电子邮件和密码登录
我想检索与电子邮件在同一行的姓氏列中键入的名称
我想知道如何这样做
我的代码如下所示:-

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

在此之后,我希望能够为 LastName 分配一个变量,这样我就可以创建一个会话以及登录

4

3 回答 3

1

然后在列列表中指定列:

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

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

于 2013-03-08T01:31:40.610 回答
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

于 2013-03-08T01:44:54.453 回答
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 存储库设置,以便您可以轻松回滚到以前的版本。这真的是必须拥有的IMO。

于 2013-03-08T01:45:18.497 回答