繁体   English   中英

如何使用php mysqli搜索数据库的所有表并显示答案

[英]how to search all the tables of the database using php mysqli and display the answer

我刚刚开始学习mysqliphp ...所以我是新手。 我试图建立一个婴儿名字的网站。

我在phpmyadmin中有一个婴儿名字数据库。 具有表COUNTRY1,COUNTRY2,COUNTRY3 ....等。 所有表格的ID名称含义性别字母都相同

我使用PHP和MYSQLI使用以下代码打印名称表

$sql1="SELECT id,name, meaning, alpha, gender FROM $country WHERE gender='$gender' AND alpha='$alpha' $limit";
    $query=mysqli_query($con,$sql1);    

while($rows=mysqli_fetch_array($query)){

        echo "<td><a href='meaning-of.php?name=$rows[name]'>".$rows['name']."</a></td>";
        echo "<td>".$rows['meaning']."</td>";
        echo "<td>".$rows['gender']."</td></tr>";
        }

名称列链接到的meaning-of.php?name=$rows[name]

现在,我想用PHP和MYSQLI中的代码搜索数据库“ babynames”的所有表(例如100个表)以查找特定名称,并显示相同的名称含义 如果名称在表格中不止一次存在,则所有名称均应连同其各自的含义一起显示。

我如何在所有表中搜索特定名称并使用PHP和MYSQLI显示。

我想通过仅将名称变量传递到地址栏中来搜索数据库,例如http:// localhost /含义-of.php?name = Johnhttp:// localhost /含义-of.php?name = samson ,通过仅根据名称搜索数据库的所有表来查找含义。例如是否设置了名称,而不是通过$ name = $ _ GET [“ name”]来获取名称; 然后搜索整个数据库表并显示其含义

是否有这样的代码

SELECT *(all columns) FROM * (all the tables or the database name or all the databases) WHERE name=$name;

请帮忙。 请先谢谢你。

将所有数据保存在一个表中 ,并添加字段country以区分国家/地区。

这是对该问题的唯一正确答案。

您可以使用UNION子句从多个select语句中获取结果mysql doc

(SELECT * FROM county1 WHERE name=$name)
UNION
(SELECT * FROM county2 WHERE name=$name);

您可以从information_schema查询所有表名

SELECT table_name FROM information_schema.tables
WHERE table_name LIKE "country%"
    AND table_schema = "<name_of_country_database>";

因此,完整的解决方案将是这样的:

    $tables_sql = "SELECT table_name FROM information_schema.tables WHERE table_name LIKE 'country%' AND table_schema = 'babynames'";
    $tables_query = mysqli_query($con,$tables_sql);

    $sql1 = '';
    while ($table = mysqli_fetch_array($tables_query)) {
        if ($sql1 != '') {
            $sql1 .= ' UNION ';
        }
        $sql1.= " (SELECT name, meaning FROM " . $table['table_name'] . " WHERE name='$name') ";
    }

    $query=mysqli_query($con,$sql1);
    while($rows=mysqli_fetch_array($query)){
        echo "<tr>";
        echo "<td>".$rows['name']."</td>";
        echo "<td>".$rows['meaning']."</td>";
        echo "</tr>";
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM