Whiskas
28.02.2015 - 20:10
Имеются 2 таблицы:
category c параметрами: cat_id, name, desc.
и article с параметрами: id, cat_id, title, description, date
Мне необходимо вставить name(из category) в запрос article.
Что-то вроде:
$result = mysql_query('SELECT * FROM article') - что здесь дописать?
while($row = mysql_fetch_assoc($result)) {
print "<a href='category.php?cat_id=".$row['cat_id']."'> Вот тута как то должен быть тайтл из таблицы category ";
}
Советовать читать мануалы не надо, много чего перепробовал, и UNION, JOIN и т.д. Может я просто чего не догоняю. Может кто сможет хоть немного научить уму разуму?)
volter9
28.02.2015 - 20:16
WhiskasЭто решается JOIN'ом:
SELECT a.*, c.name
FROM article a
LEFT JOIN category c ON (a.cat_id = c.id)
А дальше выводишь так:
print "<a href='category.php?cat_id={$row['cat_id']}'>
{$row['name']}
</a>";
_____________
Мой блог
Whiskas
28.02.2015 - 21:14
Премного благодарствую, ваш пример у меня не заработал, но по нему я немного врубился, как работает JOIN)
В итоге:
$result = mysql_query ('SELECT * FROM article LEFT JOIN category ON article.cat_id = category.cat_id');
print "<a href='category.php?cat_id=".$row['cat_id']."'>".$row['name']."</a>";
volter9
28.02.2015 - 21:18
WhiskasЯ имел ввиду так:
$result = mysql_query('SELECT * FROM article LEFT JOIN category ON (article.cat_id = category.id)');
while ($row = mysql_fetch_assoc($result)) {
print "<a href='category.php?cat_id={$row['cat_id']}'>{$row['name']}</a>";
}
_____________
Мой блог
Whiskas
28.02.2015 - 21:33
Спасибо большое. И еще 1 вопросик, если не затруднит.
mysql_fetch_assoc или mysql_fetch_object - они сильно отличаются? 2-ой по типу объектов возвращает, так какой лучше? Есть ли прямо сильная разница, окромя "удобности" для программиста.
В инете не нашел нормального объяснения.
volter9
28.02.2015 - 21:38
WhiskasИспользуй то что тебе более удобнее для тебя. Разница в синтаксисе есть:
while ($row = mysql_fetch_assoc($result)) {
print "<a href='category.php?cat_id={$row['cat_id']}'>{$row['name']}</a>";
}
while ($row = mysql_fetch_object($result)) {
print "<a href='category.php?cat_id={$row->cat_id}'>{$row->name}</a>";
}
Не знаю насчет разницы в производительности.
P.S.: К стати, mysql_* функции уже устарели, Вам лучше перейти на mysqli или PDO.
_____________
Мой блог
Whiskas
28.02.2015 - 21:42
Спасибо, я только учусь(делаю блог для практики), и все книги на mysql. Посмотрю, что да как. Еще раз спасибо.
Whiskas
1.03.2015 - 21:20
У меня возник еще 1 глупый вопрос, про "подготавливаемые запросы" mysqli.
В доках почитал, что если один и тот же запрос используется много, то он поможет шаблонизировать его. В итоге увеличение скорости и прочего еще там.
Но сути я не понял все равно. Т.е. их надо использовать постоянно и везде? Все же запросы используются по многу раз, или только для таких, как: INSERT, DELETE и прочих для статей (ведь их много приходится выводить, удалять и т.д.)?
При серии запросов, в которых меняются лишь данные, запрос передается на сервер только один раз, в дальнейшем посылаются только изменяющиеся данные.
Только лично для меня это выглядит сродни запросу в цикле. Если мы стремимся сделать выборку для какого-то логического блока одним запросом, то возможность повторно использовать подготовленный запрос выглядить странновато. А учитывая наличие хранимых процедур, странновато в двойне.
_____________
Стимулятор ~yoomoney - 41001303250491
Whiskas
1.03.2015 - 22:19
Кажется понял) Благодарствую!
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.