[PHP - MYSQL/MARIADB] error verbinding en query

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • zeroday
  • Registratie: Mei 2007
  • Laatst online: 02-10 10:38

zeroday

There is no alternative!

Topicstarter
Als nono op het gebied van programmeren heb ik een werkend script op een bepaalde locatie maar die wil ik op een nieuwe nieuwe server met een nieuwe PHP versie (PHP 7.4) draaien

PHP:
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
$servername = "localhost";
$username = "abcdef";
$password = "xxxxxxx";
$db = "archief";

        $rowcount = 0;
        $resulthtml = "";
        $where = "";
        $last_msg_number = "unknown";
        $last_msg_date = "unknown";
        $first_msg = "unknown";

        // Create connection

        $link = mysqli_connect($servername, $username, $password, $db);

$query = "SELECT ID, RecDate
            FROM archive 
            ORDER BY ID desc
            LIMIT 1 ";
        $result = $link->query($query) or die($mysqli->error);
        if($col = $result->fetch_row())

etc....



Helaas gaat op de een of ander manier hier nu mis op
- het juist verbinden naar de mariadb database
- een error op de een na laatste regel

Maar ik heb geen idee waar ik en de juiste query opbouw vandaan kan halen en een juiste verbinding kan krijgen naar de db

geen idee of dit werkt

PHP:
1
2
3
4
5
6
7
8
function dbConn($db) {
    global $servername;
    global $username;
    global $password;
    $link = new mysqli($servername, $Dsername, $password, $db);
    mysqli_set_charset($link,"UTF8");
    return $link;
}


lijkt wel maar dan volgt de melding in de log
Uncaught Error: Call to a member function query() on null op deze regel

$result = $link->query($query) or die($mysqli->error);

[ Voor 0% gewijzigd door RobIII op 21-11-2020 00:35 . Reden: Code leesbaar gemaakt met [code=php] ... [/code] tags. ]

There are no secrets, only information you do not yet have

Alle reacties


Acties:
  • +4 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Begin eens met gewoon basis debuggen (Debuggen: Hoe doe ik dat?). Kijk eens wat $link is? Vette kans dat die null is (sterker nog: dat is exact wat de foutmelding je vertelt: "null heeft geen method query()" (noch heeft een null-object enige methods; $link zou een mysqli-connectie object moeten zijn).

Zet 👏 je 👏 error 👏 reporting 👏 aan 👏. Doe dat in je php.ini of ergens als 1 van de eerste dingen in je script: error_reporting(-1);

Doe desnoods een var_dump($link); op regel 17.

En doe dan dit eens. Connecten en dan if (!$link) echo mysqli_connect_error();

Verder mix je de "OOP" en "procedurele" manier van werken in je eerste en tweede voorbeeld. Het eerste is procedureel (mysqli_connect) en het tweede "OOP" (new mysqli(...)). Lekker behulpzaam als PHP is geeft die eerste methode null terug als 't mislukt (of FALSE of -1 of '' of CTHULU of T_PAAMAYIM_NEKUDOTAYIM PHP kennende |:( ) ipv dat er gewoon een frikkin' exception gegooid wordt.
Hmmm, mysqli_connect zou FALSE moeten geven ipv null; maar goed: het zit in die hoek.

Verder probeer je ook een die($mysqli->error) te doen; heel die $mysqli variabele bestaat niet eens; ik weet niet waar je denkt dat die vandaan komt? :P



Uh, ik denk dat ik al weet wat er aan de hand is:

Je post: $link = mysqli_connect($servername, $username, $password, $db); in je eerste stuk code, maar je doet iets anders he? Je doet iets van dbConn(<iets>); $link->query(<iets); of niet? Los daarvan heb je ook nog een fout in je dbConn method: daar gebruik je $Dsername 8)7 - en los daarvan drie globals :X...

Lang verhaal kort: Zet je error reporting aan, ga debuggen en ga dan even terug naar de tekentafel want dit lijkt nergens op. En doe eens gek en sla er de handleiding op na.

[ Voor 73% gewijzigd door RobIII op 21-11-2020 00:58 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • zeroday
  • Registratie: Mei 2007
  • Laatst online: 02-10 10:38

zeroday

There is no alternative!

Topicstarter
google is normaliter mijn vriend ..

Dank voor je uitgebreide feedback .. ik ga er eens voor zitten ;)

update: uiteindelijk bleek de wijze waarop de host benoemd was niet het juiste.
Een aantal extra dingen verwijderd en het script draait weer..

[ Voor 40% gewijzigd door zeroday op 21-11-2020 11:08 ]

There are no secrets, only information you do not yet have