使用PHP循环从表中获取包含数据库表名称的表数据

时间:2017-04-21 14:24:43

标签: php loops mysqli

我有一个名为 category 的表,其中包含同一数据库中其他表的名称。我想从 类别表 中获取表名,然后从db中获取每个表中的数据。到目前为止,我有以下代码:

    $db = new mysqli('localhost', 'root', '', 'db_cat');
    if($db){
    //    $q = "SELECT TABLE";
    //    $echo = $db->query($q);
    //    echo $echo;
    // $result = $db->query("SHOW TABLES");
    $qCat="SELECT * FROM product_category";
    $cat_query= $db->query($qCat) or die(mysql_error());
    while ($fetch=  $cat_query->fetch_object()) 
    {
    $cat_id=$fetch->id;
    $category=$fetch->category;
    $p_cat=str_replace(" ","_",strtolower($category).'_categories'); 
    //if(strlen($category)>22){$fine_product_name=  substr($service, 0,19).'...';}else{ $fine_product_name=$category;}
$result = $db->query("SHOW TABLES");
       while($row = $result->fetch_array()){
            $tables[] = $row[0];
    }
    }

2 个答案:

答案 0 :(得分:0)

第二个查询必须不同。

$result = $db->query("SELECT * FROM $category"); 
   while($row = $result->fetch_array()){
        $tables[] = $row[0];
}
print_r($tables);

答案 1 :(得分:0)

首先,您连接数据库的设计并不是那么好,请检查以下代码以获取正确的连接方式。

    <?php

    $con=mysqli_connect("localhost","root","","db_cat"); 

//servername,username,password,dbname

    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySql: ".mysqli_connect_error();
    }

?>

以下是从表中获取数据的示例代码(此表名在另一个表中)。

 $get_table_name ="SELECT TableName FROM table_name";           
    $get_name=mysqli_query($con,$get_table_name);
    $count=0;

    while($row_name=mysqli_fetch_array($get_name)){

        $count++;
        $tbName=$row_name['TableName'];             
        $_SESSION['table_name'][count]=$tbName;

    }

这将向您展示如何从一个表中获取数据。您可以使用For循环来获取所有表

 $table=$_SESSION['table_name'][1];

    $get_table ="SELECT * FROM $table";

    .... // Normal way of fetching data

您可以尝试根据此调整代码并进行改进。

如需进一步参考,请参阅http://php.net/manual/en/book.mysqli.php