PHP mysql converteren naar MySQLi?

Spread the love

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. Of in het Nederlands: 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:   Snelheid Windows NTFS bestandssysteem verbeteren, sneller toegang tot bestanden?

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!

Sorteren op:   nieuwste | oudste | meest gestemd

Bedankt :)

wpDiscuz