Inline functie omzetten naar mijn Model functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donald Boers

Donald Boers

08/06/2018 21:39:44
Quote Anchor link
De volgende functie maakt deel uit van een systeempje dat ik wel aardig vind:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
    function check_changes(){
        $result = $this->db->query('SELECT counting FROM news WHERE id=1');
        if($result = $result->fetch_object()){
            return $result->counting;
        }
        return 0;
    }

Als ik deze echter in mijn normale structuur gebruik krijg ik allemaal fout meldingen, zoals:

Trying to get property of non-object

De functie wordt gebruikt voor een vergelijking die belangrijk is voor het functioneren van het systeem. Hoe dien ik mijn eigen functie aan te passen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
    function check_changes($post_id){
        
        $sql    =    "SELECT `counter`
                       FROM `comments_counter`
                      WHERE `post_id` = ?";
        
        $stmt    =    $this->pdo->prepare($sql);
        $stmt->execute(array($post_id));
        return $stmt->fetch();
    }

Het gaat hierbij om het feit of de de query een resultaat oplevert, Is dit het geval dan vinden er een aantal updates plaats in de database. Zo niet dan moet er de waarde op nul gezet worden. Ik heb het er uit gelaten maar dan werkte het niet.

Alvast bedankt

Edit
Ik heb het reeds opgelost:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$row = $stmt->fetch();
return ($row) ? $row['counter'] : 0;
Gewijzigd op 08/06/2018 21:53:22 door Donald Boers
 
PHP hulp

PHP hulp

18/12/2024 05:22:15
 
Thomas van den Heuvel

Thomas van den Heuvel

08/06/2018 21:59:46
Quote Anchor link
Als dat onderdeel is van een batch van queries doe je er wellicht verstanding aan om e.e.a. in een transactie te zetten en de tabellen/kolommen hierin te locken door FOR UPDATE toe te voegen in de selecties.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.