PHP / MySQL многомерный массив или объектно-ориентированный подход?

#php #mysql #oop #multidimensional-array

#php #mysql #ооп #многомерный массив

Вопрос:

У меня есть данные, которые я хочу извлечь из базы данных MySQL, и я хочу упорядочить их, чтобы я мог извлечь их позже. Я хочу отсортировать это по тому вопросу, где у меня есть CompanyID $ companyid: ProductID $productid: ProductName = $Product, industryName = $ industry и т. Д

итак, по сути, я хочу иметь:

  • Идентификатор компании 1: ProductID 1: вся информация об этом конкретном продукте
  • Идентификатор компании 1: идентификатор продукта 2: вся информация об этом конкретном продукте
  • Идентификатор компании 1: идентификатор продукта 3: вся информация об этом конкретном продукте

  • Идентификатор компании 2: Идентификатор продукта 1: вся информация об этом конкретном продукте

  • Идентификатор компании 2: ProductID 2: вся информация об этом конкретном продукте

и т.д. и т.п.

это цикл while, который извлекает всю информацию, и где я буду хранить ее либо в многомерном массиве, либо в каком-либо объектно-ориентированном классе в PHP. в любом случае, я не слишком уверен, как это сделать.

 while ($row = mysql_fetch_array($result)){ 
                $CompanyName=$row['CompanyName'];
                $companyid=$row['companyid'];
                $Product=$row['Product'];
                $productid=$row['productid'];
                $Industry=$row['Industry'];
                $Link=$row['Link'];
                $Keywords=$row['Keywords'];
                $region=$row['region'];}
  

РЕДАКТИРОВАТЬ: я хочу написать многомерный массив для упорядоченного сбора всех данных. как бы я это написал или это вообще лучшее решение?

РЕДАКТИРОВАТЬ: прямо сейчас у меня есть это в цикле while:

  $companyIDArray[$companyid] = $productidArray[$productid] = $productInfoArray["CompanyName"]=$CompanyName;
  

и я собираюсь создать по одному для каждого поля. Это лучший способ сделать это?

Комментарии:

1. Я знаю, что это не то, чего вы в конечном итоге хотите достичь, но этот блок $foo = $row['foo']; инструкций может быть выполнен одним махом с помощью extract($row); .

2. вы должны добавить MYSQL_ASSOC в свой mysql_fetch_array() . должно выглядеть так while ( $row = mysql_fetch_array( $result,MYSQL_ASSOC ) ) { . как долго вам нужно «хранить» вашу конструкцию данных?

3. только для страницы, но если она мне понадобится дольше, я помещу ее в переменную $_SESSION

4. @b_dubb или использовать mysql_fetch_assoc() вместо mysql_fetch_array() для того же эффекта

Ответ №1:

Вы должны делать это в своем SQL. Используйте предложение ORDER BY примерно так:

 SELECT
    companyid
    ,productid
    ,etc...
FROM
    products
ORDER BY
    companyid,
    productid
  

Комментарии:

1. я хочу сохранить эту информацию в многомерном массиве, но я не уверен, как это сделать … что-то вроде $companyIDArray [$companyid] => $productidArray [«$productid»] => $CompanyNameArray[$ CompanyName] и т. Д

Ответ №2:

  $data = array();
    while ($row = mysql_fetch_array($result)){ 

                $Industry=$row['Industry'];
                $Link=$row['Link'];
                $Keywords=$row['Keywords'];
                $region=$row['region'];}

 $data[$row['CompanyName'][$row['companyid']] = 
         array($row['Product'],$row['productid'], $Industry,$Link,$Keywords,$region );


}

print_r($data,true);
  

приведенный выше непроверенный код, но он, по крайней мере, даст вам представление о том, как это сделать.

Комментарии:

1. как я должен хранить всю информацию о продукте? нравится отрасль, ссылка, ключевые слова, регион?

2. Добавьте их также в массив данных. под одним названием компании