Schon länger ist bekannt, dass die mysql_… Funktionen als veraltet (deprecated) gelten. Aber wer noch PHP Versionen älter als 5.5 verwendet hat ein Problem, wenn der Server auf eine neuere PHP Version (PHP 5.6 oder PHP 7) umgestellt wird. Dann funktionieren alle MySQL Funktionene der From mysql_ nicht mehr und dem Webmaster wachsen graue Haare.
So ging es mir als all-inkl.com angekündigt hat die PHP Versionen 5.4 und 5.3 in 2017 nicht mehr zu unterstützen. Einige von meinen brach liegenden Webseiten würden dann nicht mehr funktionieren. Daher jetzt gezwungenermaßen der Umstieg auf mysqli_ Funktionen.
Aber der Umstieg ist ganz einfach:
Verbindung mit dem Server
mysql_
$link_identifier = mysql_connect($server, $username, $password); mysql_select_db($database_name, $link_identifier);
mysqli_
$link_identifier = mysqli_connect($server, $username, $password) or die ('ERROR: Could not connect to database!'); mysqli_select_db($link_identifier, $database_name);
MySQL-Anfrage senden
Achtung: Die Reihenfolge von Anfrage und Verbundungskennung ist vertauscht!
mysql_
$result = mysql_query($sql, $link_identifier);
mysqli_
$result = mysqli_query($link_identifier, $sql);
Datensatz auslesen
Achtung: Auch die Konstante hat sich verändert.
mysql_
$row = mysql_fetch_array($result, MYSQL_NUM);
mysqli_
$row = mysqli_fetch_array($result, MYSQLI_NUM);
Bei den meisten Funktionen reicht es in der Tat das mysql im Funktionsnamen nach mysqli zu verändern. So auch z.B. bei mysql_num_rows, mysql_error oder mysql_close.
Beim Umstieg auf die neue PHP Version sind natürlich auch ein paar andere veraltetet Elemente weggefallen. Z.B. wurden register_globals, Magic quotes und der Safe mode entfernt. Also ist es meist mit der Migration von mysql nach mysqli nicht getan. Naja, es ist wohl eine lästige Gelegenheit mit alten Kram aufzuräumen und mit schlechten Gewohnheiten zu brechen.
mysql_real_escape_string($unescaped_string) zu mysqli_real_escape_string($link_identifier, $unescaped_string).