PHP5 naar PHP7

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

05/03/2019 16:22:57
Quote Anchor link
Beste leden van PHPhulp,

De volgende connectie script doet het niet meer sinds de verandering van PHP5 naar PHP7.
De volgende error krijg ik: HTTP ERROR 500.

Heeft iemand een idee, wat ik in het script moet veranderen?

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
<?php
/* Define MySQL connection details and database table name */
$SETTINGS["hostname"]='localhost';
$SETTINGS["mysql_user"]='REPLACE';
$SETTINGS["mysql_pass"]='REPLACE';
$SETTINGS["mysql_database"]='REPLACE';
$SETTINGS["data_table"]='data'; // this is the default database name that we used

/* Connect to MySQL */


if (!isset($install) or $install != '1') {
    $connection = mysql_connect($SETTINGS["hostname"], $SETTINGS["mysql_user"], $SETTINGS["mysql_pass"]) or die ('Unable to connect to MySQL server.<br ><br >Please make sure your MySQL login details are correct.');
    $db = mysql_select_db($SETTINGS["mysql_database"], $connection) or die ('request "Unable to select database."');
};

?>


Met vriendelijke groet,

Levy van der Meijden
 
PHP hulp

PHP hulp

29/11/2024 09:26:19
 
- Ariën  -
Beheerder

- Ariën -

05/03/2019 16:29:19
Quote Anchor link
De Mysql_*****() functies werken niet meer in PHP 7. Gebruik de mysqli_***() functies of PDO.

mysqli
Gewijzigd op 05/03/2019 16:29:55 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

05/03/2019 16:36:42
Quote Anchor link
Errorlogs zijn je vriend. Check je log-directory. PHP-foutmeldingen zijn doorgaans superduidelijk en leggen vrijwel direct de vinger op de zere plek.

In dit geval zal het directe probleem waarschijnlijk inderdaad het ontbreken van de default MySQL driver (de collectie mysql_* functies) zijn.

Misschien is het ook belangrijk om je te realiseren dat software een houdbaarheidsdatum heeft. De principes waarmee jouw functionaliteit / website / applicatie is geprogrammeerd zijn mogelijk verouderd, en dan heb ik het niet alleen over code met betrekking tot mysql.

Als je van PHP 5.x naar PHP 7.y gaat dan lijkt het mij onverstandig om enkel wat database-gerelateerde functies om te gooien en het dan maar te laten voor wat het is. Er zijn in de tussentijd aardig wat spelregels veranderd.
 

05/03/2019 16:51:47
Quote Anchor link
Bedankt voor de reactie,

De functie mysqli_*** doet het, maar als ik de waarden invul, krijg ik nog de melding: request "Unable to select database."

if (!isset($install) or $install != '1') {
$connection = mysqli_connect($SETTINGS["hostname"], $SETTINGS["mysql_user"], $SETTINGS["mysql_pass"]) or die ('Unable to connect to MySQL server.<br ><br >Please make sure your MySQL login details are correct.');
$db = mysqli_select_db($SETTINGS["mysql_database"], $connection) or die ('request "Unable to select database."');
};

De waarden van de settings zijn goed.

@thomas van den Heuvel, bedankt voor je informatie.
 
- Ariën  -
Beheerder

- Ariën -

05/03/2019 16:54:44
Quote Anchor link
Draai die twee parameters eens om? Eerst de connection dan de databasenaam.
 
Thomas van den Heuvel

Thomas van den Heuvel

05/03/2019 16:55:35
Quote Anchor link
De volgorde van de parameters van select_db() is veranderd.
 

05/03/2019 18:18:39
Quote Anchor link
De $connection en $db omgedraaid, maar nog steeds de melding -> Unable to select database).

In welke volgorde zou dit dan moeten?
 
- Ariën  -
Beheerder

- Ariën -

05/03/2019 18:24:34
Quote Anchor link
Eerst de connectie, en dan de databasenaam?
En anders moet je even je script uitbreiden en aan de mysqli-functie bibliotheek vragen wat er loos is:

Je kan ook de connectie en de database benoemen in één dezelfde functie. Hier een snippet van php.net.

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
<?php
$link
= mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}


echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);
?>


Het is wel verstandig om dergelijke foutmeldingen wel op de achtergrond te loggen, en op het scherm enkel een algemene foutmelding te tonen. Gebruikers boeit het niets dat 'een database onbereikbaar is'. Bij ontwikkelen kan je dergelijke technische meldingen wel op het scherm laten zien.
 

05/03/2019 19:14:34
Quote Anchor link
Bedankt voor de informatie, de connectie is gelukt.
 
- Ariën  -
Beheerder

- Ariën -

05/03/2019 19:20:03
Quote Anchor link
Dan zou je hierop verder kunnen borduren, en de query's en dergelijke ombouwen naar mysqli.
Let op dat het niet zomaar enkel een 'i' toevoegen is, maar vaak zijn de parameters bij de functies ook anders. Check daarom altijd php.net even!
 
Thomas van den Heuvel

Thomas van den Heuvel

05/03/2019 19:36:38
Quote Anchor link
Retourneede mysqli_connect() niet te alle tijden een object? Ook als de connectie mislukt? Een controle met een ! (uitroepteken) is dan ook niet afdoende, gebruik hiervoor de functies die dit controleren, concreet o.a. connect_error.
 



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.