我已经设置了一个包含多个表的MySql数据库(需要上传在excel中输入的大量数据)。我想将每个表名用作每次将新表添加到数据库时自动更新的变量。但是,我不知道如何防止PHP在循环中覆盖我的$ tableName变量。这是我到目前为止所得到的:
<?php
if (!mysql_connect($host, $username, $password)) {
echo 'Could not connect to mysql';
exit;
}
$sql = "SHOW TABLES FROM $database";
$result = mysql_query($sql);
if (!$result) {
echo "DB Error, could not list tables\n";
echo 'MySQL Error: ' . mysql_error();
exit;
}
while ($row = mysql_fetch_row($result)) {
$tableName = $row[0];
include('../design.php');
}
?>
换句话说:在网站的首页上,我想要包含每个数据库表中的数据。我已经组织了一个框架来提取数据并在design.php中整齐地呈现它。但是,此文件使用$ tableName变量来提取数据,我认为该变量在每个循环中被覆盖导致错误(仅显示第一个表)。
相反,如果我只是在他们自己的php对象中分离代码,那么一切正常:
<?php
$tableName = tablename1;
include('../design.php');
?>
<?php
$tableName = tablename2;
include('../design.php');
?>
etc..
任何人都可以向我解释这是如何运作的吗?或者,如果有一些更聪明的做事方式?
提前致谢!
答案 0 :(得分:1)
include
脚本开头的design.php
文件。在此文件中,定义一个函数。
function doSomethingWithTableName ($table)
{
// do something with it
}
然后,在您的前端文件中,您将执行此操作:
$sql = "...";
$result = mysql_query ($sql);
while ($row = mysql_fetch_row($result))
{
$processed_data = doSomethingWithTableName ($row[0]);
// do something with $processed_data
}
希望这有帮助。
答案 1 :(得分:1)
我不知道design.php
内部的内容,但我不是将其包含在循环中,而是创建一个函数,例如:
function designFunction($tableName){
//put the design.php here
return $something;
}
现在使用循环中的designFunction
while ($row = mysql_fetch_row($result)) {
$tableName = $row[0];
$someResult = designFunction($tableName);
//etc...
}