Из БД не могу извлечь данные нормально

Статус
В этой теме нельзя размещать новые ответы.

phillip

Полезный
Регистрация
4 Сен 2007
Сообщения
411
Реакции
15
Проблема в кодировке или в чем хз. Есть у меня в БД таблица categories с полями id, name, runame. В ней записаны допустим строки
1 auto Автомобили
2 women Женчины
3 computers Компутеры

Пробую доставать это дело из базы и отображать с помощью echo- нифига не получается, он мне показывает каждый раз просто единицы какие-то. либо вопрос. Вывожу из бд таким образом:
Код:
<?php
function GetAllCategories(){
	$link = Connect2DB();
	$query = "SELECT * FROM `categories`";
	$result = @mysql_query($query,$link) or die(mysql_error()."<br />\n".$query);
	$categories = mysql_fetch_assoc($result);
	@mysql_close($categories);
	return $categories;

$categories = GetAllCategories();
foreach($categories as $category){
	echo	$category['name']."||".$category['runame']."<br>";
	
	  }
}
?>
Результат выполнения этого кода:
Код:
1||1
l||l
�||�
В чем может быть дело? я запарился уже- не работает :(
 
Это хитрая рекурсия или ошибка?

По идее, должно быть так:
Код:
<?php
function GetAllCategories(){
	$link = Connect2DB();
	$query = "SELECT * FROM `categories`";
	$result = @mysql_query($query,$link) or die(mysql_error()."<br />\n".$query);
	$categories = mysql_fetch_assoc($result);
	@mysql_close($categories);
	return $categories;
}

$categories = GetAllCategories();
foreach($categories as $category){
	echo	$category['name']."||".$category['runame']."<br>";

	  }
?>
 
1. код который скинл не рабочий, так как функцию вызываеш саму себя. после return скобку надо закрыть
2. в такой функции будет возвашатся только 1 запись а не все.
3, используй акую конструкцию

Код:
$query = "SELECT * FROM my_table";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
while ($line = mysql_fetch_assoc($result)) 
{
echo line["id"];
}


или же собрать массив с данными и передать его на вывод, но лучше сразу выводить


Код:
<?php
function GetAllCategories(){
	$link = Connect2DB();
	$query = "SELECT * FROM `categories`";
	$result = @mysql_query($query,$link) or die(mysql_error()."<br />\n".$query);
	//$categories = mysql_fetch_assoc($result);
	while($categories = mysql_fetch_assoc($result))
	{
	$categories2[]=$categories;
	}
	@mysql_close($categories);
	return $categories2;
}

$categories = GetAllCategories();
foreach($categories as $category){
	echo	$category['name']."||".$category['runame']."<br>";

	  }
?>
 
Уберите функцию и запустите в процедуре ..увидите где вылезет ошибка.
 
Подобные проблемы решаются дебаггингом.
 
во-первых убрать рекурсию,
во-вторых, скажите в какой кодировке данные у БД,
в-третьих, в какой кодировке вывод....
 
А нафига так усложнять все ?

Вот попробуйте мой код, если такая-же бурда вылезет, значит ошибка в кодировках. Тогда по другому сделаем =)

Код:
<?php
  $link = Connect2DB();
  $query = 'SELECT * FROM categories';
  $result = @mysql_query($query, $link) or die(mysql_error() . '<br />\n' . $query);

  while ($row = mysql_fetch_array($result) {
    echo $row['name'] . '||' . $row['runame'] . '<br />';
  }
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху