#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. Добавьте их также в массив данных. под одним названием компании