|
|
|
| Просьба не переносить в раздел mysql. Вопрос о работе php
=========================
Есть таблица с данными. В ней поле ID - идентификатор записи. Делаю запрос. Он выводит данные. Данные помещаем в массив. И здесь происходит непонятное.
Делаем выборку из базы данных:
---------------
$result=mysql_query($query)
---------------
Смотрим что получается:
---------------
echo mysql_result($result,$i,'catalog_id')
---------------
Все данные выходят нормально
---------------
Теперь передаю данные в массив
---------------
$catalog_id[$i]=mysql_result($result,$i,'catalog_id')
---------------
Просматриваю массив
---------------
echo $catalog_id[$i]
---------------
И начинается непонятное.
Т.е. при выводе данных запросом идут номера: 1,2,3,4,5,6,7,8,9,10,11,12 и т.д.
А при выводе из базы данных идут однозначные числа: 1,2,3,4,5,6,7,8,9,1,1,1 и т.д.
Т.е в массив помещается только первая цифра числа.
Другие данные (названия, цены и т.п.) выходят нормально.
В чем может быть дело? | |
|
|
|
|
|
|
|
для: Andrey_V
(13.02.2006 в 08:47)
| | 1)Что за $i и откуда оно берётся?
2)Чем отличаются действия
при выводе данных запросом
при выводе из базы данных
|
| |
|
|
|
|
|
|
|
для: cheops
(13.02.2006 в 13:20)
| | В полном виде это выглядит так:
=============================================
$query="
SELECT DISTINCT
catalog_id, catalog_name, catalog_cena_val, catalog_val, catalog_cena, catalog_content_lit,
catalog_content_big, catalog_date, catalog_inform, catalog_convert, avtor_name
FROM
ex_ncatalog1
INNER JOIN
ex_ncatalog4 ON (ex_ncatalog1.catalog_avtor_id = ex_ncatalog4.avtor_id)
INNER JOIN
ex_ncatalog5 ON (ex_ncatalog1.catalog_id = ex_ncatalog5.parent_catalog_id)
INNER JOIN
ex_ncatalog6 ON (ex_ncatalog1.catalog_id = ex_ncatalog6.shop_catalog_id)
WHERE
($filtr)
AND
(avtor_id $proizv)
AND
(catalog_include = 1)
AND
(shop_topic_id = $id[0])
AND
(catalog_id $catalog_id)
ORDER BY
$sort
LIMIT
$limit_3
";
$result=mysql_query($query);
$n=mysql_num_rows($result);
//Перенос данных выборки каталога в массив
for ($i=0; $i<$n; $i++)
{
$catalog_id[$i]=mysql_result($result,$i,'catalog_id');
$catalog_name[$i]=mysql_result($result,$i,'catalog_name');
$catalog_cena_val[$i]=mysql_result($result,$i,'catalog_cena_val');
$catalog_val[$i]=mysql_result($result,$i,'catalog_val');
$catalog_content_lit[$i]=mysql_result($result,$i,'catalog_content_lit');
$catalog_content_big[$i]=mysql_result($result,$i,'catalog_content_big');
$catalog_date[$i]=mysql_result($result,$i,'catalog_date');
$catalog_inform[$i]=mysql_result($result,$i,'catalog_inform');
$catalog_convert[$i]=mysql_result($result,$i,'catalog_convert');
$avtor_name[$i]=mysql_result($result,$i,'avtor_name');
$catalog_cena[$i]=mysql_result($result,$i,'catalog_cena');
}
================================
При выводе данных запросом: это значит, что если я даю echo и для вывода беру, например,
mysql_result($result,$i,'catalog_id')
то он выдает правильный показатель, например, 15.
Судя по моим понятиям именно это число должно записаться в переменную
$catalog_id[$i]
Но теперь я даю echo и $catalog_id[$i], но выводится только первая цифра числа.
Т.е. если первое число однозначное, идет нормально. Если двузначное, то после идут для 10 - 1, для 11 - 1 и т.д.
Слова: из базы данных, конечно, ошибка. Имеется в виду - из массива | |
|
|
|
|
автор: BAHC (14.02.2006 в 02:46) |
|
|
для: Andrey_V
(13.02.2006 в 22:46)
| | $catalog = array();
$result=mysql_query($query);
//Перенос данных выборки каталога в массив
$i_i = 0;
while ($row = mysql_fetch_array($result, MYSQL_ASSOC) {
foreach ($row as $k => $v) {
$catalog[$i_i][$k] = $v;
}
$i_i++;
}
mysql_free_result($result);
print_r($catalog); | |
|
|
|
|