mysql_query() su PHP 7

21 giugno 2018

php7Chi ha aggiornato a PHP 7 potrebbe aver notato che è “sparita” la funzione mysql_query(). In realtà sono sparite TUTTE le funzioni il cui nome inizia per mysql_!

Ma nessun problema: c’è un modo facile facile di risolvere. In teoria bisognerebbe riscrivere il codice sostituendo tutte le funzioni di tipo mysql_ con le nuove funzioni di tipo mysqli_, ma visto che le nuove funzioni non sono identiche a quelle vecchie, conviene utilizzare un altro banale trucco, che funziona e non dà problemi.

Infatti visto che le vecchie funzioni proprio non esistono più… ora si possono creare! Quindi se avete PHP7 potete creare delle funzioni personalizzate, con gli stessi nomi di quelle che non sono più disponibili, e che facciano la stessa identica cosa di quelle vecchie ma utilizzando quelle nuove. Qui di seguito vi posto un’ipotesi di codice da inserire nel punto in cui effettuate la connessione, e da sostituire al vecchio codice con cui effettuavate la connessione nelle precedenti versioni. Come potrete notare in questo codice ci sono le definizioni delle vecchie funzioni, in modo da poter continuare ad utilizzarle lo stesso: semplicemente funzioneranno utilizzando quelle nuove.

define('_DB_SERVER_', '***');
define('_DB_NAME_', '***');
define('_DB_USER_', '***');
define('_DB_PASSWD_', '***');

$conn = mysqli_connect(_DB_SERVER_, _DB_USER_, _DB_PASSWD_, _DB_NAME_);

if (!$conn) {
    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;
} else {
	/*
	echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
	echo "Host information: " . mysqli_get_host_info($conn) . PHP_EOL;
	*/
}

function mysql_query($q) {
    global $conn;
    return mysqli_query($conn,$q);
}
function mysql_num_rows($rs) { 
    return mysqli_num_rows($rs);
}
function mysql_fetch_assoc($rs) {
    return mysqli_fetch_assoc($rs);
}
function mysql_free_result($rs) {
    return mysqli_free_result($rs);
}
function mysql_error() {
    global $conn;
    return mysqli_error($conn);
}
function mysql_insert_id() {
    global $conn;
    return mysqli_insert_id($conn);
}

Ovviamente al posto degli asterischi *** dovete aggiungere i vostri dati che vi consentono di collegarvi al database.

Come vedete, dopo aver creato la connessione al database con la nuova funzione mysqli_connect(), ho ricreato le vecchie funzioni di tipo mysql_ in modo che utilizzino le nuove funzioni, ma mantenendo gli stessi nomi. Così potete continuare ad utilizzarle con i vecchi nomi, senza dover fare alcuna sostituzione nel codice, e sebbene non esistano più, continueranno a funzionare perchè utilizzano le nuove funzioni.

ATTENZIONE: nel codice precedente non ho ricreato tutte le vecchie funzioni di tipo mysql_, ma solo quelle principali. L’elenco completo delle nuove funzioni lo trovate su php.net/manual/en/mysqli.summary.php, ma ora perlomeno sapete come fare a ricreare quelle vecchie nel caso in cui voleste continuare ad utilizzarle. Occhio solo al fatto che non sempre quelle nuove sono simili a quelle vecchie…

Commenti