如何在循环中使用相同的变量

时间:2015-10-30 18:55:22

标签: php mysql

我已经设置了一个包含多个表的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..

任何人都可以向我解释这是如何运作的吗?或者,如果有一些更聪明的做事方式?

提前致谢!

2 个答案:

答案 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...
}