1 Востаннє редагувалося ostap34PHP (17.06.2018 19:58:54)

Тема: [MYSQL, PHP] Чому не повертає дві колонки?

От і настав той час, коли весь світ не знає чого це не працює. Я в відчаї, разом з замовником.
Сподіваюсь ви допоможете, буду дуже вдячний.
Коли запускаю запит в mysql workbench - то колонки link, relink_key є з даними.
Але коли це ж запит я запускаю через php - ці колонки null.

ЗАПИТ О_О

SELECT 
    s_relinks_logs.id,
    s_relinks.search_key AS relink_key,
    s_relinks.link as link,
    (CASE
        WHEN
            s_relinks_logs.item_type = 'product'
        THEN
            (SELECT 
                    name
                FROM
                    s_products
                WHERE
                    id = s_relinks_logs.item_id)
        WHEN
            s_relinks_logs.item_type = 'blog'
        THEN
            (SELECT 
                    name
                FROM
                    s_blog
                WHERE
                    id = s_relinks_logs.item_id)
    END) AS name,
    s_relinks_logs.anchors,
    s_relinks_logs.date,
    s_relinks_logs.item_id,
    s_relinks_logs.item_type
        

FROM
    s_relinks_logs
        LEFT JOIN
    s_relinks ON s_relinks_logs.relink_id = s_relinks.id
                                        ORDER BY date DESC

Фото таблиць (⊙.⊙)

s_relinks
https://preview.ibb.co/iV6ZCy/2018_06_17_19_40_30.png
s_relinks_logs
https://preview.ibb.co/fuGgQJ/2018_06_17_19_45_05.png
PHP код

    public function get_relinks_logs()
    {
        $query = $this->db->placehold("SELECT
   s_relinks_logs.id,
   s_relinks.search_key AS relink_key,
   s_relinks.link AS link,
   (CASE
       WHEN
           s_relinks_logs.item_type = 'product'
       THEN
           (SELECT
                   name
               FROM
                   s_products
               WHERE
                   id = s_relinks_logs.item_id)
       WHEN
           s_relinks_logs.item_type = 'blog'
       THEN
           (SELECT
                   name
               FROM
                   s_blog
               WHERE
                   id = s_relinks_logs.item_id)
   END) AS name,
   s_relinks_logs.anchors,
   s_relinks_logs.date,
   s_relinks_logs.item_id,
   s_relinks_logs.item_type
       
 
FROM
   s_relinks_logs
       LEFT JOIN
   s_relinks ON s_relinks_logs.relink_id = s_relinks.id
                                       ORDER BY date DESC");
 
        $this->db->query($query);
        var_dump($this->db->results());
        return $this->db->results();
    }

Я 100% знаю, що поля співпадають, мені ж в mysql workbench,

показує нормальну інфу.

https://preview.ibb.co/kHcued/2018_06_17_19_49_27.png

Чому так відбувається? запит в коді точно такий як тут.
Що ще скинути, описати?

"Борітеся – поборете, Вам Бог помагає!",
"Учітесь, читайте, І чужому научайтесь, Й свого не цурайтесь"  - Тарас Шевченко
"Лупайте сю скалу!" - Іван Франко

2

Re: [MYSQL, PHP] Чому не повертає дві колонки?

Що за метод placehold? Це якийсь фреймворк?

Подякували: ostap34PHP1

3

Re: [MYSQL, PHP] Чому не повертає дві колонки?

SImpla cms ((

https://pastebin.com/ApLEaYhD
Це клас для роботи з бд, вибачте за російську в коментарях класу...

"Борітеся – поборете, Вам Бог помагає!",
"Учітесь, читайте, І чужому научайтесь, Й свого не цурайтесь"  - Тарас Шевченко
"Лупайте сю скалу!" - Іван Франко

4 Востаннє редагувалося koala (17.06.2018 20:28:22)

Re: [MYSQL, PHP] Чому не повертає дві колонки?

А де саме колонки null - в тому, що воно виводить, чи в логах? Вангую, що в логах усе гаразд, просто ви двічі викликаєте $this->db->results().

Подякували: ostap34PHP1

5 Востаннє редагувалося ostap34PHP (17.06.2018 20:59:19)

Re: [MYSQL, PHP] Чому не повертає дві колонки?

koala написав:

А де саме колонки null - в тому, що воно виводить, чи в логах? Вангую, що в логах усе гаразд, просто ви двічі викликаєте $this->db->results().

в $this->db->results()  - тут виводить, потім ця змінна foreach
видалив var_dump, тепер один раз викликається, результат такий ж...

"Борітеся – поборете, Вам Бог помагає!",
"Учітесь, читайте, І чужому научайтесь, Й свого не цурайтесь"  - Тарас Шевченко
"Лупайте сю скалу!" - Іван Франко

6

Re: [MYSQL, PHP] Чому не повертає дві колонки?

Будь ласка, зробіть ще таке:
1.

        $result = $this->db->results();
        error_log(print_r($result,TRUE));
        return $result;

і подивіться, що там в логи вивелося (і нам покажіть)
2. Якщо це не продакшн (а я сподіваюся, що це не так), то увімкніть логування запитів і подивіться, який саме запит іде на СУБД (і нам покажіть).

Подякували: ostap34PHP1

7 Востаннє редагувалося ostap34PHP (21.06.2018 14:01:07)

Re: [MYSQL, PHP] Чому не повертає дві колонки?

Це все дуже дивно, але я тобі перезавантажив комп - зайшов в таблицю, і там було пусто. О_О
Напевно кеш...
О, і в mysql workbench воно все не динамічно ( треба нажати кнопку "оновити", щоб показати зміни в таблиці), тому підозрюю що десь з PHP-скрипта видалив рядок таблиці, а в mysql workbench воно не оновилося

"Борітеся – поборете, Вам Бог помагає!",
"Учітесь, читайте, І чужому научайтесь, Й свого не цурайтесь"  - Тарас Шевченко
"Лупайте сю скалу!" - Іван Франко

8

Re: [MYSQL, PHP] Чому не повертає дві колонки?

Ну чому воно не оновилось, workbench - це ж клієнт, і він не буде оновлювати кожні 1 секунда (хоча на одному проекті чувак так "лонгполлінг" зробив, типу з бекенду в реальному часі дані показував)

Не в тему
В mysql є можливість підписатись на нові дані в таблицю? Так як в редіс напр.
Навчаюсь вчитись, щоб навчатись.
Подякували: ostap34PHP1

9

Re: [MYSQL, PHP] Чому не повертає дві колонки?

Залежить від того, звідки. Тригери ставити можна; а от іззовні тримати підключення - гадаю, ні.

Подякували: ostap34PHP, Q-bart, leofun013