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()?

Waarom moet ik ext/MySQL converteren naar MySQLi?

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 foutmelding:

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in [bestand]

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.

Als je geen PHP MySQL class gebruikt

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

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`"); // ... ?>
Code language: PHP (php)

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`"); // ... ?>
Code language: PHP (php)

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 MySQLi equivalenten van ext/mysql:

  • 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.

2 gedachten over “PHP/mysql converteren naar MySQLi”

Reacties zijn gesloten.

Scroll naar boven