PHP MySqli Как выбрать все из таблицы, для которой я не знаю имя? - PullRequest
0 голосов
/ 02 марта 2019

Я работаю над личным проектом, чем-то вроде системы управления документами.Я создаю новые папки и и таблицу в БД с тем же именем, что и папка.

Я могу перечислить все из них, и я хочу, чтобы, когда я нажимаю на имя таблицы, указанное в таблице HTML, чтобы показать всеэто внутри этой таблицы.

Но я не знаю названия таблицы.

И я получаю " 0 результатов ".

Однако по URL-адресу я вижу, что я нахожусь в «правильной» таблице, поскольку в ней указано имя моей таблицы.

Я знаю, что проблема в инструкции SELECT из view.php, в которой я не знаю, как выбрать таблицу, имя которой не знаю: -)

Может кто-нибудь пожалуйстапомогите мне?

Большое спасибо.

Это мой индекс, где я перечисляю все таблицы из БД в виде кнопок:

<div class="container-fluid">
  <div class="row">

<div class="col-md-4 col-xl-4 text-center ml-sm-2 ml-md-5 ml-lg-5 mt-5">
  <div class="alert alert-danger mb-0"><strong>TABLES from DATABASE:</strong></div>

    <table class="table table-bordered table-hover text-center">

      <tr class="title">
        <th>Folder Name:</th>
      </tr>

  <?php

    $conn = mysqli_connect("localhost", "root", "", "folder");

    if (!$conn) {
       die("Connection failed: " . mysqli_connect_error());
    }

     $sql = "SELECT table_name FROM information_schema.tables where table_schema='folder';";
     $result = $conn-> query($sql);

      if ($result) {
      while ($row = $result-> fetch_assoc()) {


      echo "<a href='view.php?". $row['table_name'] ."' ><span style='font-size: 19px; color: #3277b6; margin-right: 15px;'><i class='far fa-eye'></i></span></a>";


    }
              }
          else {
            echo "0 results";
    }

    $conn-> close();

    ?>

    </table>
</div>

Это яs view.php код:

<body>

     <div class="container">
      <div class="row mt-5 ml-5">

       <div class="col-md-8 col-xl-11 text-center ml-sm-2 ml-md-5 ml-lg-5 mt-5">
         <div class="alert alert-danger mb-0">
           <a href="index.php" class="btn btn-dark mr-5" role="button">Go Back</a>
      </div>

       <div style="overflow-x:auto;">
         <table class="table table-bordered table-hover text-center">
            <tr>
              <th>Name:</th>
               <th>Create at:</th>
            </tr>

<?php

$conn = mysqli_connect("localhost", "root", "", "folder");

if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT * FROM information_schema.tables where table_name = ?";
$result = $conn-> query($sql);

if ($result) {
while ($row = $result-> fetch_assoc()) {
echo "<tr>
         <td>".$row['name']."</td>
         <td>".$row['created_at']."</td>
      </tr>";
}
echo "</table>";
}
else {
echo "0 results";
}

$conn-> close();

?>

                      </table>

                      </div>

                      </div>
            </div>
        </div>

        <!-- Optional JavaScript -->
        <!-- jQuery first, then Popper.js, then Bootstrap JSs -->
        <script src="js/jquery-3.3.1.min.js"></script>
        <script src="js/bootstrap.bundle.min.js"></script>
        <script src="js/theme-script.js"></script>

</body>
</html>

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Измените следующую строку:

echo "<a href='view.php?". $row['table_name'] ."' ><span style='font-size: 19px; color: #3277b6; margin-right: 15px;'><i class='far fa-eye'></i></span></a>";

на

echo "<a href='view.php?table_name=". $row['table_name'] ."' ><span style='font-size: 19px; color: #3277b6; margin-right: 15px;'><i class='far fa-eye'></i></span></a>";

, а затем измените следующую строку:

$sql = "SELECT * FROM information_schema.tables where table_name = ?";

на

$sql = "SELECT * FROM information_schema.tables where table_name = '{$_REQUEST['table_name']}'";

Предостережение заключается в том, что это довольно большой риск для безопасности, и вам нужно , чтобы убедиться, что переменная очищена перед внедрением ее в ваш код SQL.

И последнее, вы на самом деле не делаете никаких ошибок, поэтому измените это:

else {
echo "0 results";
}

на

else {
echo $conn->error;
}
0 голосов
/ 02 марта 2019
$sql = "SELECT " .$varible. " FROM information_schema.tables where table_schema='folder'";
$result = $conn->query($sql);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...