Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Некорректный результат запроса к БД, массив возвращается пустой :/ 
V
    Опции темы
Michael.de
Дата 20.7.2009, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 22.3.2005
Где: Deutschland

Репутация: нет
Всего: 9



Всем привет smile

У меня странная ситуация: установил xampp (версия 1.7.1), создал тестовую БД с таблицей (9 столбцов, ~50 строк). Написал простой код:
Код

<?php
 // $s - server, $u - user, $p - password, $d - DB, $q - SQL query
 function connectDB($s, $u, $p, $d, $q){
  $c=mysql_connect($s, $u, $p) or die ("Could not connect: ".mysql_error());
  mysql_select_db($d, $c) or die ("Couldn't select database...");
  $r=mysql_query($q) or die ("Query failed: ".mysql_error());
  $res=array();
  for ($i=0; $i<mysql_num_rows($r) ;$i++) $res[i]=mysql_fetch_row($r);
  mysql_free_result($r);
  mysql_close($c);
  return $res;
 }

 $arr=connectDB("localhost", "root", "", "test", "SELECT * FROM `hochschule`");
 echo("width: ".count($arr[0]).", height: ".count($arr)); // как такое может быть?
?>
который должен возвращать двумерный массив (в моём случае - всё содержимое таблицы). Проверяю в PHPMyAdmin - всё работает (PHP и MySQL). Проверка же в 15 строке выдаёт результат 1х0 (вместо 9х50). Мог бы мне кто-нибудь указать мою ошибку (я с PHP с 2005 года не работал, сорри smile).

Заранее спасибо smile
PM MAIL   Вверх
krundetz
Дата 20.7.2009, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 1
Всего: 69



На первый взгляд код работоспособный. Советую вставит проверки внутри самой функции. А не в концее ее работы.

После нескольких минут размышления пришел к выводу что: возможно стоит поменять вот этот строку:
Код

for ($i=0; $i<mysql_num_rows($r) ;$i++) $res[i]=mysql_fetch_row($r);

на такую
Код

for ($i=0; $i<mysql_num_rows($r) ;$i++) $res[$i]=mysql_fetch_row($r);


Это сообщение отредактировал(а) krundetz - 20.7.2009, 17:27


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
solenko
Дата 20.7.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 7
Всего: 67



А если включить error_reporting(E_ALL), то получим нотис Undefined constant... в
Цитата(Michael.de @  20.7.2009,  15:56 Найти цитируемый пост)
$res[i]

и станет понятно почему только одна строка.




--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Michael.de
Дата 20.7.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 22.3.2005
Где: Deutschland

Репутация: нет
Всего: 9



krundetz, поставил проверку
Код

echo("width: ".count($res[0]).", height: ".count($res));
между 8 и 9 строками (после цикла) - ничего не поменялось :/

P.S.
solenko, но я же в 7й строке пишу: $res=array();

Это сообщение отредактировал(а) Michael.de - 20.7.2009, 17:39
PM MAIL   Вверх
solenko
Дата 20.7.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 7
Всего: 67



Michael.de, и что? Какое это отношение имеет к тому, что вы пропустили $ перед именем переменной и теперь вписываете строку каждый раз в $res['i']?

А
Код

error_reporting(E_ALL_;
ini_set('display_errors', 'on');

в начале скрипта по религиозным причинам не прописываете? )



--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Michael.de
Дата 20.7.2009, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 22.3.2005
Где: Deutschland

Репутация: нет
Всего: 9



solenko: всё, я понял (этот проклятый значок $ перед переменными) smile
Код

error_reporting(E_ALL_;
ini_set('display_errors', 'on');
теперь буду знать smile

Спасибо! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0964 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.