表不存在mysql但它确实用于循环

时间:2015-05-14 09:12:54

标签: php mysql sql-server

我在这里使用mysql数据库和php来解决问题。

在php中,它获取表名,然后遍历表。获取行,然后将变量发送到函数。我正在使用for循环来做到这一点。

问题是我有7张桌子。如果表2和3包含行,那么它将遍历2并正确执行所有操作。并且它没有给表不存在表1的错误。但对于表3-7,它给出了所有表不存在。

但是如果我删除表2中的行,那么它循环3并且正常工作,并且对于1和2没有给出错误。但是对于表4-7,它给出了表不存在错误。 基本上它只在一个表中循环,并为所有后续表提供错误。我不明白是mysql或其他什么连接问题。

以下是我的代码片段:

        <?php
        $hostname_localhost ="localhost";
        $username_localhost ="xxxxxxx";
        $password_localhost ="xxxxxxxxx";
        $database_xxxxxxxxxx ="xxxxxxxxx";
        $database_yyyyyyyyyyy ="yyyyyyyyyy";
        $database_zzzzz = "zzzzz";

        $localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)
        or
        trigger_error(mysql_error(),E_USER_ERROR);

        $get_all_tables = mysql_query("SHOW TABLES FROM xxxxxxxxx");

        $table_names = array();

        while($row = mysql_fetch_array($get_all_tables, MYSQL_NUM)) {
        array_push($table_names,$row[0]);
        }

        mysql_select_db($database_xxxxxxx, $localhost);


        for ($i=0; $i<sizeof($table_names); $i++){


            $table = trim($table_names[$i]);

            $get_tag = mysql_query("SELECT * FROM $table");

            if ($get_tag){

            while($get_tag_infos = mysql_fetch_array($get_tag)){

                                $similarity = $get_tag_infos['similarity'];
                                //........... and many other variables

                                if ($similarity == 20){

                                    get20(many variables);

                                }
                                if ($similarity == 40){

                                    get40(many variables);

                                }
                                if ($similarity == 60){

                                    get60(many varibales);

                                }
                                if ($similarity == 80){

                                    get80(many variables);

                                }
                                if ($similarity == 100){

                                    get100(many variables);

                                }
                            }   
            }
            else{
                echo '</br> error! </br>'.mysql_error().mysql_errno();
            }
        }

        function get20(many variables){
            // performs a insert function to mysql
        }

        function get40(many variables){
            // performs a insert function to mysql
        }

        function get60(many variables){
            // performs a insert function to mysql
        }

        function get80(many variables){
            // performs a insert function to mysql

        }

        function get100(many variables){
            // performs a insert function to mysql
        }

        ?>

1 个答案:

答案 0 :(得分:0)

问题是与数据库的连接。在第一个表找到您的连接后,已通过内部连接更改。因此,为连接使用不同的变量。我正在设置一个运行完美的代码。我已经测试了。

<?php 
//conection: 
$link = mysqli_connect("localhost","root","pass","test") or die("Error " . mysqli_error($link)); 

//consultation: 

$query = "show tables" or die("Error in the consult.." . mysqli_error($link)); 

//execute the query. 

$result = mysqli_query($link, $query); 

//display information: 

while($row = mysqli_fetch_array($result)) { 
  echo $row["Tables_in_test"] . "<br>"; 

  $link2 = mysqli_connect("localhost","root","pass","test") or die("Error " . mysqli_error($link));
  $query2 = "select * from ".$row['Tables_in_test'] or die("Error in the consult.." . mysqli_error($link2));
   $result2 = mysqli_query($link2, $query2);
    while($row2 = mysqli_fetch_array($result2)) {
    echo "<pre>";
    print_r($row2);
    echo "</pre>";
  }

} 
?>