2013-03-08 7 views
-2

Я сделал базу данных с колоннами Email, FirstName, LastName, пароль .. и т.д.
Моя страница Войти использует адрес электронной почты и пароль для входа в систему
Я хочу, чтобы получить имя набранное в столбце LastName в тот же ряд, как Email
Я хотел бы знать, как сделать это
Мой код выглядит следующим образом: -
Получение данных из базы данных MySQL

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

После этого, я хочу, чтобы иметь возможность назначить переменную в LastName, так что я может создать сеанс вместе с логином

+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

+0

Я предлагаю вам хороший учебник. Это может быть веб-сайт, возможно, найденный Googling «php mysql tutorial» или хорошая книга. Вероятно, у вашей местной публичной библиотеки их число. –

ответ

0

Я думаю, что это охватывает все, что вы просили. Запускает сеанс, проверяет, хорошо ли это, настраивает пару переменных для наших данных, выполняет некоторую проверку данных, настраивает запрос, запрашивает db, проверяет результаты, задает значение 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"} Вы успешно вошли в систему Я пробовал этот -> if ($ count === 1) { \t $ userrecord = mysql_fetch_array ($ result); \t session_start(); $ _SESSION ['lastname'] = $ userrecord ['lastname']; \t $ _SESSION ['logged_in'] = 'вошел в систему'; \t var_dump ($ _ SESSION); echo 'Вы успешно вошли в систему; } – Tomer

+0

Я оставил там var_dump. Это пример кода, который использовал общие значения для имен в запросе и т. Д., Вы проверили, было ли все правильно?Значения массива являются нулевыми, поскольку из запроса ничего не возвращается (если оно действительно выполняется). Нет необходимости переместить session_start или любые другие части кода, чтобы попробовать то или это. Код работает, если вы правильно разместили форму, и имена, которые я использовал, верны. Я прокомментировал код, касающийся вашего подключения к базе данных, и предположил, что вы открыли соединение, не так ли? –

+0

Работал .. thankyou! могу ли я получить вашу электронную почту, чтобы я мог попросить вас помочь, когда я попаду в беду? Я новичок 14-летний – Tomer

1

Затем указать столбец в списке столбцов:

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

Затем нужно получить результат набора присвоить его переменной.

1

Функции mysql_ официально устарели и больше не поддерживаются/безопасны для использования.

Вместо этого вы должны использовать PDO PHP, поскольку это более безопасный и объектно-ориентированный подход. Просто заполните 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

Смежные вопросы