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

Форум MySQL

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

 

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

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

тема: Выборка из 2х таблиц
 
 автор: Юный Хакер   (20.01.2006 в 14:46)   письмо автору
 
 

Не работает код:

<?php
$query
=mysql_query("SELECT * FROM news, authors WHERE news.id_author=authors.id LIMIT 10");
$result=mysql_fetch_array($query);
echo 
$result['authors.name'];
?>

   
 
 автор: Саша   (20.01.2006 в 16:17)   письмо автору
 
   для: Юный Хакер   (20.01.2006 в 14:46)
 

<?php
$query=mysql_query("SELECT * FROM news, authors WHERE news.id_author=authors.id LIMIT 10");
$result=mysql_fetch_array($query) or die (mysql_error());
echo $result['authors.name'];
?>
Попробуйте так... Если ошибок нет, возможно данных таких тоже нет.

   
 
 автор: Юный Хакер   (21.01.2006 в 07:59)   письмо автору
 
   для: Саша   (20.01.2006 в 16:17)
 

>Попробуйте так... Если ошибок нет, возможно данных таких тоже нет.
Ничего не выводит, но данные-то есть...
:(

   
 
 автор: WebTech   (21.01.2006 в 10:57)   письмо автору
 
   для: Юный Хакер   (21.01.2006 в 07:59)
 

А так?

<?php 
$query
=mysql_query("SELECT * FROM news, authors WHERE news.id_author=authors.id LIMIT 10"); 
$result=mysql_fetch_array($query); 
echo 
$result['name']; 
?>

   
 
 автор: Юный Хакер   (21.01.2006 в 12:31)   письмо автору
 
   для: WebTech   (21.01.2006 в 10:57)
 

нет, не работает:((

   
 
 автор: cheops   (21.01.2006 в 13:10)   письмо автору
 
   для: Юный Хакер   (21.01.2006 в 12:31)
 

Измените код следующим образом
<?php 
  $query
=mysql_query("SELECT * FROM news, authors WHERE news.id_author=authors.id LIMIT 10"); 
  if(!
$result) exit(mysql_error());
  echo 
mysql_num_rows($query); 
?>

что-нибудь дополнительно выводится?

   
 
 автор: Юный Хакер   (21.01.2006 в 13:22)   письмо автору
 
   для: cheops   (21.01.2006 в 13:10)
 

Выводит 0

   
 
 автор: WebTech   (21.01.2006 в 13:39)   письмо автору
 
   для: Юный Хакер   (21.01.2006 в 13:22)
 

Получается что нет ни одного id из таблицы authors равного id_authors из таблицы news. Проверьте данные, может быть это на самом деле так...

   
 
 автор: Юный Хакер   (21.01.2006 в 13:42)   письмо автору
 
   для: WebTech   (21.01.2006 в 13:39)
 

Дык, проверял:)
Данные совпадают...

   
 
 автор: WebTech   (21.01.2006 в 17:03)   письмо автору
 
   для: Юный Хакер   (21.01.2006 в 13:42)
 

Можете сделать дампы таблиц news и authors?

   
 
 автор: Юный Хакер   (21.01.2006 в 17:51)   письмо автору
 
   для: WebTech   (21.01.2006 в 17:03)
 

Пожалуйста:)

-- 
-- Структура таблицы 'authors'
-- 

CREATE TABLE 'authors' (
  'id' int(11) NOT NULL auto_increment,
  'name' text NOT NULL,
  'registration' int(11) NOT NULL default '0',
  'permission' enum('other','moder','admin') NOT NULL default 'other',
  'last_active' int(11) NOT NULL default '0',
  PRIMARY KEY  ('id')
) TYPE=MyISAM AUTO_INCREMENT=3 ;

-- 
-- Дамп данных таблицы 'authors'
-- 

INSERT INTO 'authors' VALUES (1, 'Admin', 1137851962, 'admin', 1137851962);
INSERT INTO 'authors' VALUES (2, 'Moder', 1137852999, 'moder', 1137852999);

-- --------------------------------------------------------

-- 
-- Структура таблицы 'news'
-- 

CREATE TABLE 'news' (
  'id' int(11) NOT NULL auto_increment,
  'text' text NOT NULL,
  'date' int(11) NOT NULL default '0',
  'id_author' int(11) NOT NULL default '0',
  'visible' enum('y','n') NOT NULL default 'y',
  PRIMARY KEY  ('id')
) TYPE=MyISAM AUTO_INCREMENT=3 ;

-- 
-- Дамп данных таблицы 'news'
-- 

INSERT INTO 'news' VALUES (1, 'Тест:)', 1137851962, 1, 'y');
INSERT INTO 'news' VALUES (2, 'и еще раз тест:)', 1137852999, 2, 'y');

   
 
 автор: WebTech   (21.01.2006 в 18:35)   письмо автору
 
   для: Юный Хакер   (21.01.2006 в 17:51)
 

Хм... У меня все работает.

   
 
 автор: Trianon   (16.03.2006 в 21:51)   письмо автору
 
   для: Юный Хакер   (20.01.2006 в 14:46)
 

Он и не будет работать. SQL не транслирует квалифицированные имена. Нужно явно прописывать необходимые поля и алиасы именам столбцов при соединении таблиц. Либо брать ячейки не по имени, а по номеру.
Попробуйте сделать echo "<pre>"; print_r($result) - Вам всё станет ясно.

   
Rambler's Top100
вверх

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