Вывести одну строку из базы данных SQL с помощью PHP

php mysql select html-table

618 просмотра

2 ответа

5 Репутация автора

У меня есть БД под названием «члены» и таблица под названием «пользователи». Я хочу, чтобы идентификатор регистрировался, когда пользователь регистрируется, а затем этот идентификатор используется для отображения только того, что один пользователь детализирует из таблицы, а не все строки в таблице. Это мой код регистрации:

    <?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
    {
      die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("members", $con);

    $sql="INSERT INTO users (name, email, address, dob, password)
    VALUES('$_POST[name]','$_POST[email]','$_POST[address]','$_POST[dob]','$_POST[mypassword]')";

    if (!mysql_query($sql,$con))
    {
      die('Error: ' . mysql_error());
    }

    {
      header ("Location: sign_in.php");
      exit;
    }

    mysql_close($con)
    ?>

И это мой код таблицы отображения:

    <?php

    // Create connection
    $conn = new mysqli("localhost", "root", "", "members");
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    $sql = "SELECT name, email, address, dob FROM users";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        echo "<table><tr><th>Name</th><th>Email</th><th>Address</th>       <th>DOB</th></tr> id-";
        // output data of each row
        while($row = $result->fetch_assoc()) {
            echo "<tr><td>".$row["name"]."</td><td>".$row["email"]."</td><td>".$row["address"]."</td><td>".$row["dob"]."</td></tr>";
        }
        echo "</table>";
    } else {
            echo "<p>No Details</p><style>p{color: #336699; font-size: 20pt; font-family: Gulim; font-weight: bold; align: center; padding: 10px; position: absolute; top: 80; left: 560; z-index: 2; border-spacing: 0px;}</style> ";
    }
    $conn->close();
    ?>
Автор: Sam Hoinville Источник Размещён: 19.07.2016 09:59

Ответы (2)


0 плюса

58 Репутация автора

есть ли в колонке 'users' имя столбца, например ID? если нет, то создайте столбец с именем 'ID' в начале всех столбцов и установите автоматическое увеличение.

затем запустите цикл в вашем запросе и получите идентификатор

Автор: Bubai Das Размещён: 19.07.2016 10:06

1 плюс

23803 Репутация автора

В самом начале каждой страницы начинайте сеанс:

session_start();

Это позволит вам сохранять и извлекать данные о сеансе просмотра пользователя по всем запросам между браузером и сервером.

Когда вы создаете новую учетную запись, захватите новый идентификатор. Я предполагаю, что ваша usersтаблица имеет основной идентификатор.

$sql="INSERT INTO users ...";

if (!mysql_query($sql,$con)) die('Error: ' . mysql_error());

//Must have called session_start() already. This data
//will be accessible from other pages
$_SESSION['userID'] = mysql_insert_id(); 

header ("Location: sign_in.php");
exit;

На другой странице (отображающей данные пользователя) вы извлекаете идентификатор пользователя и используете его для извлечения только записи этого пользователя:

session_start();
...
//TODO: make sure the user is signed in before you proceed!

//Retrieve the user's id from storage
$userID = $_SESSION['userID'];
...

//this assumes that the primary id column is named id.  Adjust if needed
$sql = "SELECT name, email, address, dob FROM users WHERE id=$userID"
...

Результат этого запроса должен иметь всего 1 строку. Вы можете использовать его для заполнения вашего HTML

Дополнительные примечания :

  1. Как уже говорили другие, подумайте об уходе от mysql_функций. Они были удалены из новейшего PHP, поэтому они являются мертвым кодом.
  2. Определенно узнайте о готовых высказываниях . Это ужасно плохо - вставлять предоставленные пользователем значения непосредственно в ваши SQL-запросы (см. Ваш INSERTзапрос). Вы открыты для внедрения SQL, и ваша БД может быть легко перенята.
Автор: BeetleJuice Размещён: 19.07.2016 10:10
Вопросы из категории :
32x32