@Kirill2501

Как выполнить такой запрос MySQL?

Всем привет, помогите пожалуйста решить проблему.
В первом запросе я хочу вытащить все комментарии к определенной статье из таблицы base_comments
Во втором я объединяю таблицы пользователей и статей, чтобы вытащить статью и ее автора
В конечном итоге я получаю ошибку "Operand should contain 1 column(s)"
$result = $pdo->query("SELECT 
(SELECT COUNT(id_art) FROM base_comments WHERE id_art = :idArt) all_comments,
(SELECT * FROM base_articles LEFT JOIN base_users ON base_articles.id_author = base_users.id_user WHERE CONCAT(id_article,'-',url) = :nameArt)");
$articleInfo = $result->fetch();
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Это какой-то странный говнокод, который заведомо не будет работать, с любым запросом
Если в запросе используются параметры (:idArt) то его надо выполнять не через query|, а через prepare
"Все комментарии" этот запрос не вытаскивает, а только их количество.
Если у вас есть идентификатор статьи, то зачем вытаскивать по имени?
По имени вообще никогда нельзя ничего вытаскивать. Имя может поменяться. Для идентификации статьи всегда надо использовать только id
$sql = "SELECT *, (SELECT COUNT(id_art) FROM base_comments WHERE id_art = a.id_article) all_comments,
FROM base_articles LEFT JOIN base_users ON base_articles.id_author = base_users.id_user 
WHERE id_article = ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$idArt]);
$articleInfo = $stmt->fetch();


А сами комментарии, если надо, то как уже говорилось выше, запрашивать отдельным запросом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы