使用循环获取数据库中的所有表

时间:2017-04-02 01:50:14

标签: php mysql

  

请理解我对PhP相当新,我可能会在不知情的情况下回答我的问题。如果是这种情况,请指导我正确答案。

我有一个包含多个表的数据库。每个表都具有完全相同的结构,因为每个表对应于餐馆特许经营中的不同单元。我正在尝试为特许经营所有者创建一个“主”页面,以便能够将所有(或一个)表格拉到一个页面上,以便查看与每个单元相关的数据。我已经尝试了一些我能想到的渗透,以使代码正常工作,但我不断向我发出错误。我收到的最新错误消息是“您的SQL语法中有错误;请查看与您的MariaDB服务器版本对应的手册,以便在第1行附近使用正确的语法”

在过去的问题中,人们试图告诉我,我的代码需要一种方式,因为我只包含一部分代码。这次我将在页面中包含抛出错误的所有代码。

<?php
require_once('../dbconnection.php');

$tables = array($_POST["spenard"], $_POST["benson"], $_POST["eagle"],
$_POST["wasilla"], $_POST["boniface"], $_POST["dimond"], $_POST["tudor"],
$_POST["huffman"], $_POST["dtown"], $_POST["airport"], $_POST["college"],
$_POST["npole"], $_POST["kenai"], $_POST["suldotna"]);
$length = count($tables);


?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Food Safety Checklist Master List</title>

<script>

</script>
</head>

<body>

<!--<table>
    ?php
        for ($i = 0; $i < $length; $i++) {?>
        <tr>
            <th>?php echo $tables[$i]; ?></th>
        </tr>
        ?php }
    ?>
    <tr>

    </tr>
</table>-->

<table>
    <tr>
        <th>Food Safety Checklist</th>
    </tr>
    <?php for ($i = 0; $i < $length; $i++) { 
        mysqli_select_db($conn, $dbname);
        $query_lists = "SELECT * FROM $tables[$i]";
        $lists = mysqli_query($conn, $query_lists) or
die(mysqli_error($conn));
        $row_lists = mysqli_fetch_assoc($lists);
        $totalRows_lists = mysqli_num_rows($lists);?>
    <tr>
        <th><?php echo $row_lists[' ']; ?></th>
    </tr>
    <?php } ?>
</table>

</body>
</html>

发起页面的代码是:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Food Safety Checklist Master Selection</title>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.15.0/jquery.validate.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.15.0/additional-methods.min.js"></script>
</head>

<body>

<header>
    <h1>Pizza Hut Food Safety</h1>
</header>

<section>
    <div>
        <form action="mastershow.php" method="post" name="masterselect" id="masterselect">
            <table>
                <tr>
                    <th colspan="2"><h2>Stores</h2></th>
                </tr>
                <tr>
                    <th colspan="2"><input type="submit" value="Run" id="submit" name="submit"></th>
                </tr>
                <tr>
                    <td><label for="spenard">Spenard 010576</label></td>
                    <td><input name="spenard" id="spenard" type="checkbox" value="`010576`"><br/></td>
                </tr>
                <tr>                
                    <td><label for="benson">Benson 011169</label></td>
                    <td><input name="benson" id="benson" type="checkbox" value="`011169`"><br/></td>
                </tr>
                <tr>
                    <td><label for="eagle">Eagle River 008181</label></td>
                    <td><input name="eagle" id="eagle" type="checkbox" value="`008181`"><br/></td>
                </tr>
                <tr>
                    <td><label for="wasilla">Wasilla 010324</label></td>
                    <td><input name="wasilla" id="wasilla" type="checkbox" value="`010324`"><br/></td>
                </tr>
                <tr>
                    <td><label for="boniface">Boniface 008615</label></td>
                    <td><input name="boniface" id="boniface" type="checkbox" value="`008615`"><br/></td>
                </tr>
                <tr>
                    <td><label for="dimond">W. Dimond 009150</label></td>
                    <td><input name="dimond" id="dimond" type="checkbox" value="`009150`"><br/></td>
                </tr>
                <tr>
                    <td><label for="tudor">Tudor 014640</label></td>
                    <td><input name="tudor" id="tudor" type="checkbox" value="`014640`"><br/></td>
                </tr>
                <tr>
                    <td><label for="huffman">Huffman 0101684</label></td>
                    <td><input name="huffman" id="huffma" type="checkbox" value="`010684`"><br/></td>
                </tr>
                <tr>
                    <td><label for="dtown">6TH AVE 011168</label></td>
                    <td><input name="dtown" id="dtwon" type="checkbox" value="`011168`"><br/></td>
                </tr>
                <tr>
                    <td><label for="airport">Airport Rd. 014215</label></td>
                    <td><input name="airport" id="airport" type="checkbox" value="`014215`"><br/></td>
                </tr>
                <tr>
                    <td><label for="college">College Rd. 008179</label></td>
                    <td><input name="college" id="college" type="checkbox" value="`008179`"><br/></td>
                </tr>
                <tr>
                    <td><label for="npole">North Pole 008339</label></td>
                    <td><input name="npole" id="npole" type="checkbox" value="`008339`"><br/></td>
                </tr>
                <tr>
                    <td><label for="kenai">Kenai 008668</label></td>
                    <td><input name="kenai" id="kenai" type="checkbox" value="`008668`"><br/></td>
                </tr>
                <tr>
                    <td><label for="suldotna">Suldotna 031574</label></td>
                    <td><input name="suldotna" id="suldotna" type="checkbox" value="`031574`"><br/></td>
                </tr>
            </table>
        </form>
    </div>
</section>

<footer>
    Designed by Greg Weiland &copy;2017
</footer>   

</body>
</html>

同样,我试图让特许经营权所有者可以“检查”运行报告的商店,然后能够从相应的表中获取所有行(同样,每个表都有一个对应的名称他所选择的其中一个单位数字。每个表具有相同的结构。感谢您提供任何帮助

2 个答案:

答案 0 :(得分:0)

它告诉你你的查询是错误的,你在里面有一个变量而没有告诉它它是一个变量修复它像这样

$query_lists = "SELECT * FROM '$tables[$i]'";

编辑因类型数组

而更改此项
  //see my last comment on why i do it this way
  <?php foreach ($tables as $qtables) { 
            mysqli_select_db($conn, $dbname);
            $query_lists = "SELECT * FROM '$qtables'";

答案 1 :(得分:-1)

试试这个:

$sql = "SELECT * FROM ".$tables[$i];
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"] . "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();

然后例如你在你的选择中寻找id,然后只用$ results [&#39; id&#39;];

找到它

还有一点注意事项:我喜欢将我的数据库查询方法放在我导入的单独的php文件中。在这种情况下,我将所有数据收集在$ results数组中并返回数组。

类似的东西:

$sql = "SELECT * FROM ".$tables[$i];
$result = $conn->query($sql);
$results = array();  
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        $results[] = $row;
    }
} else {
    echo "0 results";
}
$conn->close();
return $results;