2014-02-06 3 views
0

Следующий код из моих данных между таблицами, но по какой-то причине только одно значение вводится в базу данныхPHP вставки SQL вопрос в то время как петля/Еогеасп

<?php 

    DEFINE("DB_SERVER", "localhost"); //LOCALHOST 
    DEFINE("DB_USER", "user"); 
    DEFINE("DB_PASS", "pass"); 
    DEFINE("DB_NAME", "table"); 

    $connect = mysql_connect(DB_SERVER,DB_USER,DB_PASS) or die("connect issue". ' ' . mysql_error()); 
    mysql_query('SET NAMES utf8'); 

    $db = mysql_select_db(DB_NAME,$connect) or die("connect issue". ' ' . mysql_error()); 
    mysql_query('SET NAMES utf8'); 

    if (!$db){ 
     echo "connect issue"; 
    } 

    $sql = "SELECT id, column2 FROM tablea"; 
    $result = mysql_query($sql) or die(mysql_error()); 

    $set = date("Y-m-d H:i:s", time()); 

    while ($row = mysql_fetch_array($result)) { 

     $id = $row['id']; 
     $list = $row['column2']; 

     echo "user_id: $id"; 
     echo "<br/><br/>"; 

     $makes = explode (";", $row['column2']); 

     $i = 0; 
     foreach ($makes as $make) { 

      $sql2 = "SELECT url FROM tableb WHERE id = '$make'"; 
      $result2 = mysql_query($sql2) or die(mysql_error()); 

      while ($row2 = mysql_fetch_array($result2)) { 

       echo $row2[0]; 
       echo $row2[1]; 
       echo $row2[2]; 
       echo $row2[3]; 
       echo $row2[4]; 
       echo $row2[5]; 
       echo $row2[6]; 
       echo $row2[7]; 

       $m1 = $row2[0]; 
       $m2 = $row2[1]; 
       $m3 = $row2[2]; 
       $m4 = $row2[3]; 
       $m5 = $row2[4]; 
       $m6 = $row2[5]; 
       $m7 = $row2[6]; 
       $m8 = $row2[7]; 

       echo "<br/>"; 

      } 

      if (++$i == 8) break; 
     } 

     $sql3 = "INSERT INTO tablec (partner_id, make1, make2, make3, make4, make5, make6, make7, make8, saved) VALUES ('$id', '$m1', '$m2', '$m3', '$m4', '$m5', '$m6', '$m7', '$m8', '$set')"; 
     $result3 = mysql_query($sql3) or die(mysql_error()); 

     var_dump($sql3); 
     var_dump($result3); 

     if($result3) { 

      echo "done"; 

     } 

     else { 

      echo "fail"; 

     }  

     echo "<pre>"; 
      var_dump($row); 
     echo "</pre>"; 


     echo "<hr/>"; 

    } 

?> 

var_dump SQL:

string(186) "INSERT INTO tablec (partner_id, make1, make2, make3, make4, make5, make6, make7, make8, saved) VALUES ('75', 'opel', '', '', '', '', '', '', '', '2014-02-06 18:20:14')"

он работает нормально, но только одна переменная вставила таблицу «$ row2 [0];»

В чем проблема? спасибо за помощь!

+0

Я не понимаю вашу проблему. У вас есть ошибка SQL? – iPouf

+0

Можете ли вы объяснить больше? Какая переменная вставлена, а это не так, как вы это проверили, что вы пытались исправить до сих пор? – Mark

ответ

1

Вы только когда-либо получать одно поле из ваших tableb:

 $sql2 = "SELECT url FROM tableb WHERE id = '$make'"; 
         ^^^^---- here 

Если вы хотите больше полей, необходимо указать их:

SELECT url, field1, field2, etc... 
+0

Также я думаю, что третий запрос должен находиться внутри цикла foreach. –

+0

Это тоже, но это зависит от OP, чтобы понять ... Выполнение вложенных запросов, подобных попыткам, в любом случае очень неэффективно. –

Смежные вопросы