PHP5 naar PHP7
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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."');
};
?>
/* 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
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.
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.
Draai die twee parameters eens om? Eerst de connection dan de databasenaam.
select_db() is veranderd.
De volgorde van de parameters van In welke volgorde zou dit dan moeten?
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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);
?>
$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.
Bedankt voor de informatie, de connectie is gelukt.
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!