2015-05-14 3 views
0

Я hava пропустил проблему здесь с базой данных mysql и php.таблица не существует mysql, но она для цикла

В php он получает имена таблиц, а затем проходит через таблицы. Забирает строки, а затем отправляет переменные в функцию. Я использую для циклов, чтобы сделать это.

Проблема в том, что у меня есть 7 таблиц. Если таблицы 2 и 3 содержат строки, то они проходят через 2 и делают все правильно. и он не дает таблицы, не существует ошибки для таблицы 1. но для таблицы 3-7 она дает все, поскольку таблица не существует.

но если я удаляю строки в таблице 2, то он проходит через 3 и работает корректно и не дает ошибок для 1 и 2. но для таблицы 4-7 она дает таблицу не существует err. В основном это только петли через одну таблицу со строками и дает ошибки для всех следующих таблиц. Я не понимаю, что проблема подключения к 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 
     } 

     ?> 

ответ

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>"; 
    } 

} 
?> 
+0

спасибо ... забыли, что. его всегда небольшие ошибки. –