Вы не можете. Ну, функция postfix в основном является Postfix Plugin для IntelliJ (теперь интегрирована). Все шаблоны являются только скомпилированным кодом, как вы можете видеть здесь:
К сожалению, нет такой простой xml-конфигурации. : (
Мне очень, очень не нравится публиковать ответы, которые я не проверял, но ради прогресса этого вопроса я сделаю удар.
"SELECT
a.id, a.feed, a.phone, a.time_stamp,
b.username,
c.imagenamesized,
COUNT(d.id) AS likes
FROM user_feeds a
INNER JOIN user_credentials b ON a.phone = b.phone
INNER JOIN profile_pic c ON a.phone = c.phone
LEFT JOIN user_feed_likes d ON a.id = d.feed_id
WHERE a.phone IN ('" . implode("',', $contact_owned) . "')
GROUP BY a.id
ORDER BY a.time_stamp DESC
LIMIT $offset, $limit"
Поскольку user_feed_likes
может содержать ноль «лайков» для конкретного feed_id
, a LEFT JOIN
является правильным JOIN
. Ваш синтаксис LEFT JOIN
должен отражать ваши INNER JOIN
с.
Используя GROUP BY
, вы генерируете совокупные данные, с которыми COUNT()
могут с удовольствием работать.
Чтобы сделать ваш запрос короче и потенциально легче читать, я рекомендую использовать псевдонимы таблиц (a
, b
, c
, d
). При объявлении псевдонимов вы можете написать ключевое слово AS
перед псевдонимом как синтаксический сахар, но я думаю, что более распространенным является его опускание.
Ваши $from
и $to
являются плохим выбором для имен переменных, потому что это не буквально данные, которые они хранят. $from
не страшно, но $to
потенциально вводит в заблуждение будущих читателей вашего кода. Вот почему я изменил его в своем фрагменте.
В соответствии с рекомендациями, вы всегда должны писать ключевые слова mysql во всех заглавных буквах для удобства чтения.
В соответствии с передовой практикой следует избегать использования *
в предложении SELECT
. Извлекайте данные только из тех столбцов, которые вы собираетесь использовать. Это позволит вам зациклить результирующий набор и просто вставить полный $row
в $respond
, не называя каждый столбец явным образом [key]
.
Вы должны снова прочесать свой скрипт и убедиться, что вы последовательно используете объектно-ориентированный синтаксис mysqli. Смешивание процедурного и объектно-ориентированного не является лучшей практикой. Я предпочитаю объектно-ориентированный, потому что он более лаконичен.
Если вы не знаете, $result
может быть повторен непосредственно с foreach()
без вызова fetch_assoc()
.
Избегайте объявления одноразовых переменных. Если вы просто помещаете данные в другой массив, сделайте это без промежуточных переменных.
Я не знаю, исходит ли ваш массив $contact_owned
(рассмотрите возможность переименования этой переменной, чтобы лучше описать содержащиеся в ней данные. Например, $user_phone_numbers
) из пользовательской отправки, но если это из формы представление или другой ненадежный источник, тогда вы ДОЛЖНЫ реализовать подготовленное заявление о безопасности и стабильности. См. Этот пост, в котором говорится о построении подготовленного оператора с переменным числом заполнителей: https://stackoverflow.com/a/52323556/2943403
Если $contact_owned
получено из В предыдущем запросе к базе данных было бы более прямым сократить общее количество поездок в базу данных и просто написать логику WHERE
, чтобы отфильтровать необходимые телефонные номера пользователей, используя идентификатор пользователя или что-то вместо вашей текущей логики IN
. Это может даже позволить вам избежать сложного синтаксиса подготовленных операторов.