PHP MySqli如何从我不知道名称的表中选择所有内容?
我在做一个个人项目,比如文档管理系统。 我正在数据库中创建与文件夹同名的新文件夹和表 我可以列出所有这些,我想当我点击HTML表格中列出的表格名称时,显示该表格中的所有内容 但是我不知道桌子的名字 我得到了0个结果 数据库表的屏幕截图-> O结果的屏幕截图 -> 列出表格的屏幕截图-> 但是,我可以在URL中看到我在正确的表中,因为它显示了我的表的名称 我知道问题出在view.php中的SELECT语句中,我不知道如何选择我不知道名称的表:- 有人能帮我吗 非常感谢 这是我的索引代码,我将DB中的所有表列为按钮:PHP MySqli如何从我不知道名称的表中选择所有内容?,php,mysql,html,mysqli,Php,Mysql,Html,Mysqli,我在做一个个人项目,比如文档管理系统。 我正在数据库中创建与文件夹同名的新文件夹和表 我可以列出所有这些,我想当我点击HTML表格中列出的表格名称时,显示该表格中的所有内容 但是我不知道桌子的名字 我得到了0个结果 数据库表的屏幕截图-> O结果的屏幕截图 -> 列出表格的屏幕截图-> 但是,我可以在URL中看到我在正确的表中,因为它显示了我的表的名称 我知道问题出在view.php中的SELECT语句中,我不知道如何选择我不知道名称的表:- 有人能帮我吗 非常感谢 这是我的索引代码,我将D
<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>
这是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>
更改以下行:
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>";
$sql = "SELECT * FROM information_schema.tables where table_name = ?";
到
需要注意的是,这是一个相当大的安全风险,您需要确保在将变量注入到SQL代码之前清除该变量
最后一件事,您实际上并没有执行任何错误捕获,所以请更改以下内容:
else {
echo "0 results";
}
到
这段代码毫无意义:$sql=SELECT*FROM information_schema.tables,其中table_name=$结果=$conn->query$sql;您需要通过使用一个准备好的语句并将一个值绑定到该语句来设置table_name值。另外,您应该将url更改为像eview.php?table='这样的内容$行['table_name']以便使用$\u GET variableNote轻松检索。注意:mysqli的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_查询接口混淆。在你对程序性风格投入太多之前,值得换一种。示例:$dB=新的MySqLi…和$dB>准备…程序接口是当MyQLIAPI被引入并且理想地不应该用于新代码时的PHP 4时代的人工制品。考虑使用A来解决像这样的问题。它们为您提供了将代码组织到适当的模型、视图和控制器上下文中所需遵循的模式,并避免了在HTML、PHP、SQL和JavaScript都混杂在一起的情况下出现令人困惑的问题。框架有很多种形式,从真正的精益型到功能非常全面的智能型,中间有很多点。为什么不让文件夹成为你的内容表的一列呢?@mario这是什么意思?谢谢@dearsina我改变了这一点,但它仍然显示0结果:/正如你所说的,在最后一次使用它要好得多part@Blagojce,试试这个,定义完$sql变量后,立即执行var_dump,获取sql查询并在phpMyAdmin中运行,然后查看您得到的结果。哦,天哪,您正在尝试查询您的表吗?好的,您的SQL查询应该改为从{$\u请求['table\u name']}中选择*。@Blagojce,我很高兴我们对其进行了排序。在使用这些代码之前,请先阅读SQL注入。
$sql = "SELECT * FROM information_schema.tables where table_name = ?";
$sql = "SELECT * FROM information_schema.tables where table_name = '{$_REQUEST['table_name']}'";
else {
echo "0 results";
}
else {
echo $conn->error;
}