MySQLi

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

SQL database developer

Functie omschrijving Voor een softwarebedrijf gespecialiseerd in het ontwikkelen van logistieke software in omgeving Tilburg zijn wij op zoek naar een ervaren SQL database developer. Je gaat werken aan uitdagende, complexe projecten. Iedere klant/project betekent maatwerk in de database. Jouw werkzaamheden zullen er als volgt uit zien: Je bent verantwoordelijk voor de gehele ontwikkelstraat. Van architectuur tot ontwikkeling Je gaat je bezig houden met het ontwerpen en ontwikkelen van MS SQL server databases. Je gebruikt hiervoor T-SQL als programmeer laag. Je begeleidt als lead developer de projecten bij klanten van A – Z. Je sluit aan bij meetings met klanten,

Bekijk vacature »

Android developer

De functie Schiphol is een plek om te reizen, te verblijven en te werken. Door middel van data en technologie richten we op al deze gebieden het leef- en werkklimaat optimaal in en zorgen we voor een slimmere en efficiëntere operatie. Wij ontwikkelen nieuwe producten en diensten vanuit de wensen en behoeften van onze klanten, voorspellen passagier flows en testen digitale oplossingen om rijen en andere pijnpunten in het proces te verminderen. Met slimme feedback van sensortechnologie maken we zelfs data van toiletten en stoelen inzichtelijk en bruikbaar. Het Commercial Platform bestaat uit multidisciplinaire teams met een end-2-end verantwoordelijkheid voor

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

PHP Developer

Dit ga je doen Je werkt nauw samen met het websitebureau aan de ontwikkeling en optimalisering van het internationale platform; Je ziet nieuwe webshops op en voert optimalisaties door; Je bouwt aan technische, functioneel en commercial resultaat; Je vindt het leuk om zelfstandig binnen een internationale organisatie te werken, maar krijgt ook energie om samen met collega's te werken. Hier ga je werken Voor een bedrijf in de regio Rotterdam zijn wij opzoek naar een PHP Developer. Je wordt onderdeel van het communicatieteam en gaat je bezighouden met het optimaliseren van de website van dit internationale bedrijf. Je schakelt veel

Bekijk vacature »

Senior C# Software Ontwikkelaar te Zaandam

Bedrijfsomschrijving Deze werkgever heeft als missie om haar klanten op ICT-gebied volledig te ontzorgen. Ze zijn een ICT bedrijf met een verscheidenheid aan ICT oplossingen waaronder Cloud oplossingen en een groot deel van het werk is gericht op software realisatie. Voor de Enterprise-klanten voert het relatief kleine ontwikkelteam waar jij deel uit van kan gaan maken binnen deze organisatie te Zaandam de grootste opdrachten uit. Niet alleen websites en complexe webapplicaties maar ook mobile apps, web services en complete systeemintegraties! Je moet dan denken aan Dynamics, Sharepoint en Salesforce. Je komt hier terecht in een relatief kleine organisatie met ontzettend

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Moordrecht zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

Front-end Angular developer

Functie In jouw rol als Front-End developer werk je samen met de backend developers om middels tweewekelijkse sprints het platform naar een hoger niveau te tillen. Hiernaast heb je affiniteit met data en werk je graag samen met het team om de gegevensintegriteit en -beveiliging te waarborgen, om ervoor te zorgen dat de gebruiker wereldwijd de beste SaaS-services heeft. Deze organisatie heeft meer dan 100 mensen in dienst, waarvan er 45 in Nederland werken. Het ontwikkelteam bestaat uit 10 mensen en is verdeeld in 2 scrumteams. Het eerste team bestaat uit Java en Scala ontwikkelaars. Het tweede team, waar jij

Bekijk vacature »

Front-end Developer - Juniorfunctie

Functie omschrijving Ben jij op zoek naar een uitdagende baan als front-end developer, in een informele werksfeer, waar jij echt het verschil kan maken? Wil jij graag werken voor een bedrijf dat sportiviteit en een open communicatie, hoog in het vaandel heeft staan? Dan hebben wij de perfecte vacature voor je! Voor een klein bedrijf in Rijen dat gespecialiseerd is in het omzetten van digitale woningtekeningen naar managementinformatie, zijn wij per direct op zoek naar een allround front-end developer. Jouw werkzaamheden zien er als volgt uit: Ja gaat nauw samenwerken met de back-end developer. De database structuur is volledig gebouwd

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! Voor een opdrachtgever in omgeving Moordrecht zijn wij op zoek naar een programmeur. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op

Bekijk vacature »

Fullstack Developer

Functieomschrijving Heb je kort geleden jouw HBO diploma ICT development behaald? Of zit je nog aan het begin van je carrière en heb je affiniteit met C#.NET? Voor een erkende werkgever in de omgeving van Oosterhout zijn wij op zoek naar een fullstack developer. Als C#.NET developer werk je samen met een vooruitstrevend team aan het ontwikkelen van maatwerk software voor klanten. Je hebt affiniteit met SQL, maar nog belangrijker is dat je kennis en ervaring hebt met C#.NET. Jouw werkzaamheden zien er als volgt uit: Het ontwikkelen van onze high-availability en high-performance backend; Je begint de dag rond 8:30

Bekijk vacature »

PHP Developer - medior functie

Functieomschrijving Ben jij innovatief en wil jij je kennis graag delen met jouw nieuwe collega's? Lees dan snel verder! Voor een leuke opdrachtgever in de omgeving van Roosendaal zoeken wij een Symfony developer. Of je nou junior, medior of senior bent, je krijgt hier alle vrijheid en verantwoordelijkheid om jouw eigen loopbaan te ontwikkelen. Je gaat je hier bezig houden met en inspelen op de actualiteiten van jouw vakgebied. Techstack: Symfony, PHP, mySQL. Kennis van Svelte is helemaal mooi meegenomen. Bedrijfsprofiel Al sinds '99 is dit webbureau actief. De kernwaarden binnen het bedrijf zijn integer, dienstbaar en deskundig. Je komt

Bekijk vacature »

Software Programmeur PHP

Functie Ben jij op zoek naar een nieuwe uitdaging als PHP developer en zoek je een leuke platte organisatie? Lees dan snel verder! Voor een opdrachtgever in omgeving Capelle aan den IJssel dat zich gespecialiseerd heeft in het realiseren van veilige netwerkverbindingen zijn wij op zoek naar een leuke software developer ter versterking van het huidige team. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen PHP, JAVA en Node.js. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

Java (Java EE) Developer

In het kort Werken als Java developer betekent werken aan complexe IT projecten bij onder meer een internationaal containeroverslag bedrijf. Zo sturen we apparaten en eindgebruikers aan d.m.v. onze custom-made software oplossing, die dagelijkse vele duizenden containers verwerkt. Denk aan systemen die volautomatische kranen aansturen en op afstand bedienen, de volledige afhandeling van containernummerherkenning bij het laden en lossen van zeeschepen of het tonen van instructies aan de chauffeurs van ruim 300 straddle carriers. En dat allemaal redundant, robuust en in een dynamische 24/7 omgeving! Jij versterkt ons ontwikkelteam en gaat aan de slag met oa. Java i.c.m. Spring (Boot),

Bekijk vacature »

PHP ontwikkelaar

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »
Lord Gaga

Lord Gaga

22/11/2011 23:08:29
Quote Anchor link
Hallo,

Ik werk voor het eerst met OOP, en ik snap het al een beetje, maar met het volgende kom ik niet verder.

Ik wil dat als ik op een pagina $user->setOnline(); zet, hij de paginanaam, je ID en de tijd opslaat (update als je er al in staat, en insert als je er nog niet in staat).

En nu heb ik ergens gevonden dat als je een function uit een ándere class, in een class wilt gebruiken, je dat zo moet doen: classnaam::functionnaam();
Maar dit werkt niet bij MySQLi..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$mysqli = new mysqli('host', 'naam', 'wachtwoord', 'database');


Hier zit verder geen class mysql { } etc. bij, deze is standaard dacht ik.
En dan heb ik verder deze class: (Er is nog een ander, maar die is hier niet bij nodig)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class User
{    
    public function loggedIn()
    {
        if ($_SESSION['loggedIn'] != true OR $_SESSION['IP'] != $_SERVER['REMOTE_ADDR'])
        {
            header('Location: ' . config::website() . '/logout');
        }
    }

    public function loggedOut()
    {
        if ($_SESSION['loggedIn'] == true AND $_SESSION['IP'] == $_SERVER['REMOTE_ADDR'])
        {
            header('Location: ' . config::website() . '/me');
        }
    }

    public function setOnline()
    {
        if ($_SESSION['loggedIn'] == true AND $_SESSION['IP'] == $_SERVER['REMOTE_ADDR'])
        {
            $select = 'SELECT * FROM user_online WHERE userID = ' . $_SESSION['userID'];
            $query = mysqli::query($select);
  
            if ($query->num_rows != 1)
            {
                $update = 'UPDATE user_online SET time = ' . time() . ', pageName = "' . $_SERVER['SCRIPT_NAME'] . '", hour  = ' . date('H:i') . ' WHERE userID = ' . $_SESSION['userID'];
                $query = mysqli::query($update);
            }
            else
            {
                $insert = 'INSERT INTO user_online (userID, pageName, time, hour) VALUES (' . $_SESSION['userID'] . ', "' . $_SERVER['SCRIPT_NAME'] . '", ' . time() . ', ' . date('H:i') . ') ';
                $query = mysqli::query($insert);
            }
        }
    }
}


In de eerste 2 functies staat config::website(), daarmee roep ik dus de functie website aan uit de class config.
Maar wanneer ik dat met MySQLi probeer, krijg ik deze error:

Non-static method mysqli::query() cannot be called statically, assuming $this from incompatible context in /include/classes.inc.php on line 62

Op welke manier moet ik dit oplossen zodat het werkt?
 
PHP hulp

PHP hulp

24/11/2024 00:36:55
 
Wouter J

Wouter J

23/11/2011 07:55:51
Quote Anchor link
Die :: klopt inderdaad niet. Deze is alleen voor static methodes.

Je zal MySQLi in je class moeten laden (het liefst via de constructor) en vervolgens kun je die de hele tijd aanroepen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
class User
{
  private $sqli;

  public function __construct( $sqli )
  {

    $this->sqli = $sqli;
  }


  public function setOnline()
  {

    $uQuery = "
      UPDATE
        users
      SET
        online = 1
      WHERE
        id = "
.(int) $this->id."
    "
;
    $result = $this->sqli->query($uQuery);
    // Handel de query mooi af met een affected_rows functie
  }
}

?>


Tevens zou ik als ik jou was i.p.v. werken met MySQLi gaan werken met PDO, dit werkt stukken beter in OOP. Een goede tutorial: http://phptuts.nl/view/27/
Gewijzigd op 23/11/2011 07:56:19 door Wouter J
 
Lord Gaga

Lord Gaga

23/11/2011 08:53:49
Quote Anchor link
Ik houd het denk ik eerst bij MySQLi, misschien dat ik later nog eens naar PDO ga kijken.

Ik heb nu het volgende:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
class User
{    
    private $mysqli;

    public function __construct( $mysqli )
    {

        $this->mysqli = $mysqli;
    }


    public function loggedIn()
    {

        if ($_SESSION['loggedIn'] != true OR $_SESSION['IP'] != $_SERVER['REMOTE_ADDR'])
        {

            header('Location: ' . config::website() . '/logout');
        }
    }


    public function loggedOut()
    {

        if ($_SESSION['loggedIn'] == true AND $_SESSION['IP'] == $_SERVER['REMOTE_ADDR'])
        {

            header('Location: ' . config::website() . '/me');
        }
    }


    public function setOnline()
    {

        if ($_SESSION['loggedIn'] == true AND $_SESSION['IP'] == $_SERVER['REMOTE_ADDR'])
        {

            $select = 'SELECT * FROM user_online WHERE userID = ' . $_SESSION['userID'];
            $query = $this->mysqli->query($select);
  
            if ($query->num_rows != 1)
             {

                $update = 'UPDATE user_online SET time = ' . time() . ', pageName = "' . $_SERVER['SCRIPT_NAME'] . '", hour  = ' . date('H:i') . ' WHERE userID = ' . $_SESSION['userID'];
                $query = $this->mysqli->query($update);
            }

            else
            {
                $insert = 'INSERT INTO user_online (userID, pageName, time, hour) VALUES (' . $_SESSION['userID'] . ', "' . $_SERVER['SCRIPT_NAME'] . '", ' . time() . ', ' . date('H:i') . ') ';
                $query = $this->mysqli->query($insert);
            }
        }
    }
}

?>


Maar dan krijg ik deze error:

Warning: Missing argument 1 for User::__construct(), called in /include/classes.inc.php on line 86 and defined in /include/classes.inc.php on line 43

Fatal error: Call to a member function query() on a non-object in /include/classes.inc.php on line 69
Gewijzigd op 23/11/2011 08:54:40 door Lord Gaga
 
Victor -

Victor -

23/11/2011 09:10:07
Quote Anchor link
Als je nu de class User aanroept, moet je dus een mysqli instantie meegeven, bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$user
= new User(new mysqli('host', 'name', 'pass', 'database'));
?>


of een instantie die je al eerder gebruikte, bijvoorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$mysqli
= new mysqli('host', 'name', 'pass', 'database');

/*
 * Andere code
 */


$user = new User($mysqli);
?>


edit: puntkomma vergeten
Gewijzigd op 23/11/2011 09:11:17 door Victor -
 
Lord Gaga

Lord Gaga

23/11/2011 09:19:24
Quote Anchor link
Dan is de error weg maar word er geen query uitgevoerd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
class User
{    
    protected $mysqli;

    public function __construct(mysqli $mysqli)
    {

        $this->mysqli = $mysqli;
    }


    public function loggedIn()
    {

        if ($_SESSION['loggedIn'] != true OR $_SESSION['IP'] != $_SERVER['REMOTE_ADDR'])
        {

            header('Location: ' . config::website() . '/logout');
        }
    }


    public function loggedOut()
    {

        if ($_SESSION['loggedIn'] == true AND $_SESSION['IP'] == $_SERVER['REMOTE_ADDR'])
        {

            header('Location: ' . config::website() . '/me');
        }
    }


    public function setOnline()
    {

        if ($_SESSION['loggedIn'] == true AND $_SESSION['IP'] == $_SERVER['REMOTE_ADDR'])
        {

            $select = 'SELECT * FROM user_online WHERE userID = ' . $_SESSION['userID'];
            $query = $this->mysqli->query($select);
  
            if ($query->num_rows == 1)
            {

                $update = 'UPDATE user_online SET time = ' . time() . ', pageName = "' . $_SERVER['SCRIPT_NAME'] . '", hour  = ' . date('H:i') . ' WHERE userID = ' . $_SESSION['userID'];
                $query = $this->mysqli->query($update);
            }

            else
            {
                $insert = 'INSERT INTO user_online (userID, pageName, time, hour) VALUES (' . $_SESSION['userID'] . ', "' . $_SERVER['SCRIPT_NAME'] . '", ' . time() . ', ' . date('H:i') . ') ';
                $query = $this->mysqli->query($insert);
            }
        }
    }
}


$config = new Config();
$user = new User($mysqli);
?>


$mysqli word op config.inc.php aangemaakt, en die staat samen met deze pagina geinclude op me.php
Gewijzigd op 23/11/2011 09:22:30 door Lord Gaga
 
Victor -

Victor -

23/11/2011 09:30:50
Quote Anchor link
waarom dit?
Quote:
public function __construct(mysqli $mysqli)

Toevoeging op 23/11/2011 09:31:17:

verander dat eens in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php
public function __construct($mysqli)
 
Lord Gaga

Lord Gaga

23/11/2011 09:34:32
Quote Anchor link
Ben er net achter gekomen dat het aan de insert en update query ligt, als ik namelijk update query vervang door return 1, en insert query vervang door return 0,

krijg ik wel een juist resultaat (1 als ik iets in de tabel zet, en 0 als ik het er weer uithaal)

Aan de MySQLi verbinding ligt het dus niet meer denk ik..
 
Victor -

Victor -

23/11/2011 09:41:11
Quote Anchor link
gebruik ook foutafhandeling, zet eens na je insert, update en select query
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
echo $this->mysqli->error;
?>
 
Lord Gaga

Lord Gaga

23/11/2011 09:48:27
Quote Anchor link
Ik heb het al gevonden, als op de regel erboven return staat, voert hij de query niet meer uit, nu werkt het:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
class User
{    
    protected $mysqli;

    public function __construct($mysqli)
    {

        $this->mysqli = $mysqli;
    }


    public function loggedIn()
    {

        if ($_SESSION['loggedIn'] != true OR $_SESSION['IP'] != $_SERVER['REMOTE_ADDR'])
        {

            header('Location: ' . config::website() . '/logout');
        }
    }


    public function loggedOut()
    {

        if ($_SESSION['loggedIn'] == true AND $_SESSION['IP'] == $_SERVER['REMOTE_ADDR'])
        {

            header('Location: ' . config::website() . '/me');
        }
    }


    public function setOnline()
    {

        if ($_SESSION['loggedIn'] == true AND $_SESSION['IP'] == $_SERVER['REMOTE_ADDR'])
        {

            $select = 'SELECT * FROM user_online WHERE userID = ' . $_SESSION['userID'];
            $query = $this->mysqli->query($select);

            if ($query->num_rows == 1)
            {

                $update = 'UPDATE user_online SET time = "' . time() . '", pageName = "' . $_SERVER['SCRIPT_NAME'] . '", hour  = "' . date('H:i') . '" WHERE userID = ' . $_SESSION['userID'];
                $this->mysqli->query($update);
            }

            else
            {
                $insert = 'INSERT INTO user_online (userID, pageName, time, hour) VALUES (' .$_SESSION['userID'] . ', "' . $_SERVER['SCRIPT_NAME'] . '", "' . time() . '", "' . date('H:i') . '") ';
                $this->mysqli->query($insert);
            }
        }
    }
}


$config = new Config();
$user = new User($mysqli);
?>
 
Wouter J

Wouter J

23/11/2011 11:14:46
Quote Anchor link
Victor - op 23/11/2011 09:30:50:
waarom dit?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
public function __construct(mysqli $mysqli)

Dit is juist goed. Hiermee geef je aan de $mysqli alleen een instance mag zijn van de class MySQLi. En dat moet ook, want als je de constructor een pdo instance meegeeft werkt het niet. Dus forceer altijd welk database type je wilt hebben in een class en hiermee zorg je dat je een fout krijgt bij een andere instance.
 



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.