[英]how to search all the tables of the database using php mysqli and display the answer
我刚刚开始学习mysqli和php ...所以我是新手。 我试图建立一个婴儿名字的网站。
我在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 = John或http:// 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.