Можно ли выполнить поиск по нескольким таблицам для поиска «username», «password», «stat»? - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь создать страницу входа в систему, где она ищет имя пользователя, пароль и статистику (для перенаправления на соответствующий интерфейс). Могу ли я что-нибудь сделать для этого?

Я нахожусь на PHP 7, я пытался сделать $sqluser = "SELECT * FROM adminlist, studentlist, teacherlist WHERE username = '$username' AND password = '$password' ";, но он не может найти

<?php
session_start();
//The initial screen for login
$server = 'localhost';
$user = 'root';
$pass = '';
$db = 'tap';


$conn = mysqli_connect($server, $user, $pass, $db);
$sql = "SELECT * FROM adminlist, studenlist, teacherlist";
$result = mysqli_query($conn,$sql);

if(isset($_POST['submit'])){
  $username = $_POST['username'];
  $password = $_POST['password'];
  $sqluser = "SELECT * FROM adminlist, studenlist, teacherlist  WHERE username = '$username' AND password = '$password' ";
  $result = mysqli_query($conn, $sqluser);

  if($result->num_rows > 0)
  {
    while ($row = $result -> fetch_assoc()) 
    {
      $stat = $row['stat'];
    }
     header("Location: logintest.php?id=" . $stat );
  }
  else
  {
    echo "Account not found";
  }
}

$conn->close();

это сообщение об ошибке:

Примечание: попытка получить свойство 'num_rows' необъекта в C: \ xampp \ htdocs \ TAP \ TapHome.php в строке 20 Аккаунт не найден

1 Ответ

0 голосов
/ 17 октября 2019

Вам нужно использовать UNION, а не перекрестный продукт. Кроме того, вы должны использовать подготовленный запрос для предотвращения внедрения SQL.

$sqluser = "
    SELECT stat FROM adminlist WHERE username = ? AND password = ?
    UNION 
    SELECT stat FROM studentlist WHERE username = ? AND password = ?
    UNION
    SELECT stat FROM teacherlist WHERE username = ? AND password = ?";
$stmt = $conn->prepare("$sqluser");
$stmt->bind_param("ssssss", $username, $password, $username, $password, $username, $password);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
if ($row) {
    $stat = $row['stat'];
    header("Location: logintest.php?id=" . $stat );
} else {
    echo "Account not found";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...