Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Convertire query per mysql4 vs mysql5

    Ciao a tutti!

    Avrei bisogno di un aiutino, dato che non mi intendo molto di mysql.
    Ho una query del forum SMF che funzionava bene su mysql4, ed avendo spostato il forum su un server che supporta solo mysql5 ho un problema di compatiblità.

    La query è questa:

    Codice PHP:
        $result_boards db_query("
            SELECT
                c.name AS catName, c.ID_CAT, b.ID_BOARD, b.name AS boardName, b.description,
                b.numPosts, b.numTopics, b.ID_PARENT,
                IFNULL(mem.memberName, m.posterName) AS posterName, m.posterTime, m.subject, m.ID_TOPIC,
                IFNULL(mem.realName, m.posterName) AS realName," 
    . (!$user_info['is_guest'] ? "
                (IFNULL(lb.logTime, 0) >= b.lastUpdated) AS isRead, c.canCollapse,
                IFNULL(cc.ID_MEMBER, 0) AS isCollapsed" 
    ' 1 AS isRead') . ",
                IFNULL(mem.ID_MEMBER, 0) AS ID_MEMBER, m.ID_MSG,
                IFNULL(mem2.ID_MEMBER, 0) AS ID_MODERATOR, mem2.realName AS modRealName
            FROM 
    {$db_prefix}categories AS c, {$db_prefix}boards AS b
                LEFT JOIN 
    {$db_prefix}messages AS m ON (m.ID_MSG = b.ID_LAST_MSG)
                LEFT JOIN 
    {$db_prefix}members AS mem ON (mem.ID_MEMBER = m.ID_MEMBER)" . (!$user_info['is_guest'] ? "
                LEFT JOIN 
    {$db_prefix}log_boards AS lb ON (lb.ID_BOARD = b.ID_BOARD AND lb.ID_MEMBER = $ID_MEMBER)
                LEFT JOIN 
    {$db_prefix}collapsed_categories AS cc ON (cc.ID_CAT = c.ID_CAT AND cc.ID_MEMBER = $ID_MEMBER)" '') . "
                LEFT JOIN 
    {$db_prefix}moderators AS mods ON (mods.ID_BOARD = b.ID_BOARD)
                LEFT JOIN 
    {$db_prefix}members AS mem2 ON (mem2.ID_MEMBER = mods.ID_MEMBER)
            WHERE 
    $user_info[query_see_board]
                " 
    . isset($_REQUEST['catogid']) ? "
                AND c.ID_CAT = 
    {$_REQUEST['catogid']}'' "
                AND b.ID_CAT = c.ID_CAT
                AND b.childLevel <= 1
            ORDER BY c.catOrder, b.childLevel, b.boardOrder"
    __FILE____LINE__); 
    L'errore generato è :

    codice:
    Unknown column 'c.ID_CAT' in 'on clause' File: /home/.... ...... /forum/Sources/BoardIndex.php Linea: 109
    Sapreste gentilmente aiutarmi a riscrivere la query in modo tale che funzioni?
    Ve ne sarei davvero grata
    Grazie

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Devi cambiare questa riga così

    Codice PHP:
    FROM ({$db_prefix}categories AS c, {$db_prefix}boards AS b
    Ci sono le parentesi in più

  3. #3
    Ti ringrazio moltissimo per la risposta.
    Ho appena provato come mi hai suggerito, ponendo le parentesi sul FROM ed il warning che risulta stavolta è:

    codice:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND c.ID_CAT =' at line 1
    File: /home/..... ..../forum/Sources/BoardIndex.php
    Linea: 109
    Ci siamo quasi? :P

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Adesso il problema è qui

    Codice PHP:
            WHERE $user_info[query_see_board
                
    " . isset($_REQUEST['catogid']) ? " 
                
    AND c.ID_CAT = {$_REQUEST['catogid']}" : '' . " 
                
    AND b.ID_CAT c.ID_CAT 
                
    AND b.childLevel <= 
    Mi viene il sospetto che $user_info[query_see_board] non sia valorizzato...

  5. #5

  6. #6
    Allora,
    mettendo nel codice questa cosa:
    Codice PHP:
    echo $user_info[query_see_board]; 
    ottengo per il mio utente (aministratore del forum) il valore 1
    per rispettivamnete un guest ed un utente normale ottengo:
    codice:
    FIND_IN_SET(-1, b.memberGroups) 
    (FIND_IN_SET(0, b.memberGroups) OR FIND_IN_SET(4, b.memberGroups))
    Premesso che i test sulla query incriminata e relativi errori li effettuo con utente admin, quindi valore 1 della variabile.
    Adesso mi rimetto a te perchè le mie conoscenze di PHP e mysql vsono così basilari da non permettermi di venirne a capo

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    hhmmm... strano
    Prova a mettere tutta la query in una variabile e poi stampare quella; voglio vederla per intero

  8. #8

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    ...E quella sarebbe TUTTA la query? :master:

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.