Как получить целевые результаты, связанные с MYSQL?

0

Хорошо, поэтому я не совсем понял, как сформулировать вопрос, но я работаю над проектом, и часть проекта должна отображать историю результатов для конкретного пользователя (пользователь является столбцом в таблице). Моя конечная цель: пользователь был несколько раз запрещен, и я хочу отобразить все запреты для этого конкретного пользователя. Но я не могу понять, как это сделать.

Это часть кода, где я хочу отображать результаты:

<?php
   echo '<li>
            <div>
                <p>'.$row['banDate'].'</p>
                <p>'.$row['banReason'].'</p>
                <p>'.$row['banLength'].'</p>
            </div>
        </li>';
}
?>

И я хочу, чтобы результат этих строк был связан с. $ Row ['pName']. Вот мой запрос sql:

$db = new PDO("mysql:host=".DBHOST.";port=3306;dbname=".DBNAME, DBUSER, DBPASS);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = ('SELECT UUID, pName, isBanned, pRank  FROM bans WHERE pName = :pName');
$stmt_1 = $db->prepare($query);
$stmt_1->execute(array(':pName' => $_GET['name']));
$row = $stmt_1->fetch();

Игнорируйте ГДЕ, чтобы просмотреть каждого пользователя.

Запреты будут храниться в базе данных SQL, подключенной к серверу Minecraft. Я пробовал все, но я все еще в тупике.

  • 0
    banLength , banReason и banDate в таблице или находятся в другой таблице?
  • 0
    @prodigitalson Это все в одной таблице.
Показать ещё 2 комментария
Теги:

1 ответ

0
Лучший ответ

Ну, столбцы, которые вы пытаетесь использовать, у вас нет в вашем списке выбора, поэтому сначала вам нужно настроить свой запрос:

SELECT UUID, pName, isBanned, pRank, banLength, banReason, banDate FROM bans WHERE pName = :pName

Затем, чтобы вывести все строки, вам нужно выполнить петлю по вашим результатам или вызвать fetchAll и перебрать по массиву. Я бы зациклился на результатах stat, но, поскольку потенциально может быть много результатов, и у вас, похоже, нет причин для их извлечения:

<?php
$db = new PDO("mysql:host=".DBHOST.";port=3306;dbname=".DBNAME, DBUSER, DBPASS);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

try {
   $stmt = $db->prepare('SELECT UUID, pName, isBanned, pRank, banLength, banReason, banDate FROM bans WHERE pName = :pName');
   $stmt->execute(array(':pName' => $_GET['name']));
} catch (PDOException $e) {
   // do something if you have an exception thrown
   echo $e->getMessage();
   exit();
}
?>
<?php if ($stmt->rowCount() < 1): ?>
    <p>No bans for user</p>
<?php else: ?>
    <ul>
        <?php while (false !== ($row = $stmt->fetch(PDO::FETCH_ASSOC))): ?>
            <li>
                <div>
                    <p><?php echo $row['banDate'] ?></p>
                    <p><?php echo $row['banReason'] ?></p>
                    <p><?php echo $row['banLength'] ?></p>
                </div>   
            </li>
        <?php endwhile; ?>
    </ul>
<?php endif; ?>
  • 0
    Теперь, скажем, у меня была такая же ситуация, но 3 столбца были в отдельной таблице, мне нужно было бы создать отдельный запрос?
  • 0
    Зависит от структуры таблицы, но, вероятно, вы бы сделали один запрос с JOIN как: SELECT b.UUID, b.pName, b.isBanned, b.pRank, d.banLength, d.banReason, d.banDate FROM bans b JOIN banDetails d ON (d.UUID = b.UUID) WHERE d.UUID - b.UUID AND b.pName = :pName Вам просто нужен столбец, который связывает обе таблицы друг с другом, обычно через формальный FOREIGN KEY ограничение
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню