2014-10-16 2 views
1

У меня есть таблица с 6 столбцоввыборки 2 столбца из таблицы в 2 массива PHP MySQL

Сортировать как:

База данных -> дети

|CANDY | COLOR | DRINK | PET | SONG | TOY | 
--------------------------------------------------- 
|cookie | blue | juice | dog | if | ball | 
|cake | red | coke | cat | ask | doll | 

Я хочу сохранить

  • все конфеты в одном Array под названием Candy[];
  • все цветы на color[];
  • все напитки на drink[]; и т.д ....

мне удалось создать массив с именами столбцов с FORLOOP с этими линиями, который работает отлично:

$ fieldName = mysqli_fetch_field_direct ($ result, $ i) -> name; $ {$ fieldName} = array();

Но когда код попадает в WHILE часть, которая также находится внутри цикла, чтобы добавить элементы столбцов внутри массива [], это добавляет только первый элемент и возвращается к FORLOOP, идет и добавляет один элемент к следующему массиву [] и переходит к следующему массиву [] ....

while($row = mysqli_fetch_array($result)){ 
    //inserts itens in the "$array" with columns name 
    ${$fieldName}[] = $row[$i]; 
} 

Если я пытаюсь "echo"arrays[] и don't поставить "BREAK" в конце WHILE, он возвращает погрешность

"Undefined смещение: 0 в строке ..."

И когда я поставил "BREAK", он работает на:

echo candy[0]; = cookie 

, но не работает для:

echo candy[1]; = Undefined offset: 1 in line... 

Вот весь код:

$sql="SELECT candy, color, drink, pet, song, toy FROM kids"; 
$result = mysqli_query($con,$sql); 

$colNumber = mysqli_num_fields($result); 

    for($i=0;$i<=$colNumber -1;$i++){ 

     $fieldName = mysqli_fetch_field_direct($result, $i)->name; 
     echo . $fieldName . "<br /><br />"; 

     //Creates an Array with Coll Name from DB 
     //with dynamic-variable ${$fieldname} 
     ${$fieldName} = array(); 

     while($row = mysqli_fetch_array($result, MYSQLI_NUM)){ 

      //inserts the received itens into the array ${$fieldName} 
      ${$fieldName}[] = $row[$i]; 

      printf ("%s (%s)\n", $row[$i], $row[1]); 
      } 

     echo ${$fieldName}[0]; 
     echo candy[0]; 

     echo ${$fieldName}[1]; 
     echo candy[1]; 
     echo "<hr />"; 
} 

в исследовании WHI LE код работает, когда подмигнули не внутри FORLOOP и если я делаю query() как:

SELECT candy FROM kids. 

Но тогда, как и что, как я бы нужно 600 строк повторяющегося кода, чтобы получить то, что я хочу, и копировать/вставьте снова и снова каждый новый столбец в таблице DB.

Любые идеи?

мне это нужно, чтобы положить массивы внутри HTML <SELECT><OPTION></SELECT>, а затем использовать mt_rand() перетасовать и получить разные «profiles». Это не будет использоваться с малышами, это был всего лишь пример. Это будет виртуальный преступник, который будет перетасовывать переменные, чтобы создать другую гипотезу о преступлении для студентов юридических школ.

я уже провел 3 дня, чтение документации на http://php.net/manual/pt_BR/mysqli-result.fetch-array.php

и «прибегая к помощи» его, но не смог найти какой-либо ответ.

+0

Потому что я не знаю, как заставить его работать. Я уже пробовал, но все, что у меня есть, было ошибкой. Любое предложение кода было бы оценено. –

+0

дорогой я удалил свой ответ. И я теперь знаю, чего ты хочешь. Сорр, я не могу помочь вам в этом. –

+0

Спасибо, в любом случае! –

ответ

2

Найден способ сделать это. Я перевел код на английский, чтобы другие могли его получить. Если есть неправильное имя переменной, исправьте ее, используя комментарии и наслаждайтесь!

$sql = "SELECT parquet, defendant, action, modusOperandi, victim, crime FROM crime_elements"; 

//runs '$sql' query to get database data 
$result = mysqli_query($con,$sql); 

$collNumber = mysqli_num_fields($result); 

echo "ColL Number :" . $collNumber; 

// Creates $data Array[] 
$data = array(); 

while($row = mysqli_fetch_array($result)){ 
    //inserts received data into "$data" and makes available by array[]index 
    $data[] = $row; 
} 

for($i=0;$i<=$collNumber -1;$i++){ 
    // Gets the column name from the query() 
    $fieldName = mysqli_fetch_field_direct($result, $i)->name; 
    echo "</br><b>Coll Name:</b> " . $fieldName . "<br /><br />"; 

     ${$fieldName} = array_column($data, $i); 
    print_r(${$fieldName}); 
    echo "<br /><b>Specified item choice[]:</b> ". ${$fieldName}[2]; 
    echo "<hr />"; 
}