PHP mysql converteren naar MySQLi?

PHP stopt de ondersteuning van verouderde MySQL functies, ook wel ext/mysql genoemd. Overstappen van ext/mysql naar MySQLi – of PDO – is nu belangrijk als je jouw website wilt laten functioneren met nieuwe ‪PHP‬-versies. Maar, weet jij of je ext/mysql gebruikt? En hoe converteer je PHP-code van mysql_connect() naar mysqli_connect()?

ext/MySQL? MySQLi? Converteren? #

Het omzetten van oude ext/mysql functies naar MySQLi is belangrijk voor de upgrade naar PHP 7. PHP 7 kent namelijk de verouderde ext/mysql functies niet meer, en dan toont jouw website een Fatal error: Uncaught Error: Call to undefined function mysql_connect() in [bestand] foutmelding, of WordPress roept: Your PHP installation appears to be missing the MySQL extension which is required by WordPress.

In het Nederlands is dat: Het lijkt erop dat je PHP-installatie geen MySQL-extensie heeft en die is noodzakelijk om WordPress te kunnen gebruiken..

Maar: vaak ben je er zelf niet eens van op de hoogte dat je verouderde technieken op jouw website gebruikt. Als ik je zeg dat het om functies zoals mysql_connect(), mysql_select_db() en mysql_query() gaat, dan zegt dat je vast meer. Dat moet omgebouwd worden naar de MySQLi equivalenten, om ervoor te zorgen dat je website blijft functioneren.

De i staat voor Improved; de MySQLi extensie is een verbeterde versie van de ext/mysql extensie.

In mijn Saotn.org-artikel Migrate PHP ext/mysql to MySQLi worden ext/mysql functies geconverteerd naar MySQLi. Stapsgewijs én eenvoudig.

Geen PHP MySQL class #

Als mijn website geen MySQL class gebruikt, is het artikel dan nog steeds bruikbaar?

Ik dacht dat je dit wel interessant zou vinden:   WordPress Emoji verwijderen

Stel dat je geen PHP class gebruikt voor de verbinding met jouw MySQL database, maar dat je in ieder PHP-script dezelfde stukjes PHP-code herhaalt. Dan is het artikel nog steeds heel goed bruikbaar. Je moet alleen de relevante onderdelen eruit halen, en de betreffende PHP-code op meer plekken aanpassen.

Als in jouw PHP-scripts, in vrijwel ieder bestand, steeds het volgende naar voren komt:

<?php
  $conn = mysql_connect("db-host","user","pass");
  $db = mysql_select_db("db-name", $conn);
  $result = mysql_query("SELECT * FROM `table`");
  // ...
?>

Dan moet dit in iedere PHP-script aangepast worden naar:

<?php
  $conn = mysqli_connect("db-host","user","pass","db-name")
  $result = mysqli_query($conn, "SELECT * FROM `table`");
  // ...
?>

Dat is nog wel te doen, toch? Als je dan toch bezig bent, bouw het gelijk om naar een PHP MySQLi class.

MySQLi equivalenten voor ext/mysql #

Het ombouwen van ext/mysql naar MySQLi extensie is best straightforward. Je moet alleen rekening houden met dat MySQLi – waar nodig – het connectie-object éérst wil, waar dat in ext/mysql vaak de tweede parameter was.

Je vindt hier een overzichtje met meestgebruikte mysql_* en MySQLi equivalenten:

  • mysql_connect: mysqli_connect
  • mysql_select_db: – (wordt meegegeven in mysqli_connect)
  • mysql_query: mysqli_query
  • mysql_num_rows: mysqli_num_rows
  • mysql_fetch_assoc: mysqli_fetch_assoc
  • mysql_fetch_row: mysqli_fetch_row
  • mysql_fetch_array: mysqli_fetch_array
  • mysql_affected_rows: mysqli_affected_rows
  • mysql_insert_id: mysqli_insert_id
  • mysql_free_result: mysqli_free_result
  • mysql_get_server_info: mysqli_get_server_info
  • mysql_close: mysqli_close
  • mysql_real_escape_string: mysqli_real_escape_string

En MySQLi in WordPress? #

En voor WordPress?, vraag je je wellicht af. WordPress biedt vanaf versie 3.9 ondersteuning op MySQLi. Sinds WordPress 4.4 is WordPress compatible met PHP 7.

Jan Reilink

My name is Jan. I am not a hacker, coder, developer, programmer or guru. I am merely a system administrator, doing my daily thing at Vevida in the Netherlands. With over 15 years of experience, my specialties include Windows Server, IIS, Linux (CentOS, Debian), security, PHP, websites & optimization.

Leave a Reply

2 Reacties op "PHP mysql converteren naar MySQLi?"

Hoi! Praat mee en laat een reactie achter!

  Subscribe  
nieuwste oudste meest gestemd
Abonneren op

Bedankt :)