Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как цикл while выковыревает данные из массива mysql_fetch_assoc($result) ???
 
 автор: AN   (08.10.2009 в 01:24)   письмо автору
 
 

Я так понимаю, массив mysql_fetch_assoc многомерный, и если сделать запрос в БД на 10 результатов, цикл while разбрасывает все по ключам названия полей
while ($myrow = mysql_fetch_assoc($result))
{
$myrow["Name"]
}

но какие он использует ключи строк? и почему конструкция print_r($myrow) выдает массив одной строки

у меня задача, на пример, вывести три разные строки в трех разных местах , без использования while
вот так не получается
$myrow["Name"][4]
$myrow["Name"][2]

то есть нужно по индексам, зная их, в ручную вывести определенные поля с определенных строк массива, как это сделать, помогите !!!!

  Ответить  
 
 автор: AN   (08.10.2009 в 01:26)   письмо автору
 
   для: AN   (08.10.2009 в 01:24)
 

увидел на сайте пример типа

@$partnersi = mysql_query("SELECT src,title FROM partners",$connect);

$partnersiki = array();

while($r = mysql_fetch_assoc($partnersi))
$partnersiki[] = array(
'title' => $r['title'],
'src' => $r['src']
);

вот вопрос, а почему нужно создавать массив из массива, разве никак нельзя извлечь из массива $r ???

  Ответить  
 
 автор: cheops   (08.10.2009 в 01:35)   письмо автору
 
   для: AN   (08.10.2009 в 01:26)
 

Дело в том, что так устроена функция mysql_fetch_assoc() - она возвращает одну строку результирующей таблицы в виде массива. При следующем обращении - следующую строку, при следующем - ещё одну, пока строки в результирующей таблице не кончатся. Можете сами попробовать
<?php
$partnersi 
mysql_query("SELECT src,title FROM partners",$connect);
echo 
"<pre>";
$r mysql_fetch_assoc($partnersi);
print_r($r);
$r mysql_fetch_assoc($partnersi);
print_r($r);
$r mysql_fetch_assoc($partnersi);
print_r($r);
?>

А while() используется просто для того, чтобы не писать вот так несколько вызовов подряд. Если строки кончились - функция mysql_fetch_assoc() возвращает false и цикл заканчивает работу автоматически.

  Ответить  
 
 автор: AN   (08.10.2009 в 02:46)   письмо автору
 
   для: cheops   (08.10.2009 в 01:35)
 

ааааааааа
спасибо!
а как будет правильнее выводить, несколько раз вызывать $r = mysql_fetch_assoc($partnersi);
или загнать все в один массив?

  Ответить  
 
 автор: Ramilka   (08.10.2009 в 02:56)   письмо автору
 
   для: AN   (08.10.2009 в 02:46)
 

Правильней через цикл while

  Ответить  
 
 автор: cheops   (08.10.2009 в 03:17)   письмо автору
 
   для: AN   (08.10.2009 в 02:46)
 

Иногда требуется помещение данных в массив, так чтобы получилась двумерная копия результирующей таблицы, но чаще данные обрабатывают непосредственно в цикле while().

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования