Come modificare mysql a mysqli?
Base di questo codice sottostante che uso per regolare mysql, come potrei convertire usare mysqli?
È semplice come cambiare **mysql _query($sql); per mysqli _query($sql); ?**
<?PHP
//in my header file that is included on every page I have this
$DB["dbName"] = "emails";
$DB["host"] = "localhost";
$DB["user"] = "root";
$DB["pass"] = "";
$link = mysql_connect($DB['host'], $DB['user'], $DB['pass']) or die("<center>An Internal Error has Occured. Please report following error to the webmaster.<br><br>".mysql_error()."'</center>");
mysql_select_db($DB['dbName']);
//end header connection part
//function from a functions file that I run a mysql query through in any page.
function executeQuery($sql) {
$result = mysql_query($sql);
if (mysql_error()) {
$error = '<BR><center><font size="+1" face="arial" color="red">An Internal Error has Occured.<BR> The error has been recorded for review</font></center><br>';
if ($_SESSION['auto_id'] == 1) {
$sql_formatted = highlight_string(stripslashes($sql), true);
$error .= '<b>The MySQL Syntax Used</b><br>' . $sql_formatted . '<br><br><b>The MySQL Error Returned</b><br>' . mysql_error();
}
die($error);
}
return $result;
}
//example query ran on anypage of the site using executeQuery function
$sql='SELECT auto_id FROM friend_reg_user WHERE auto_id=' .$info['auto_id'];
$result_member=executequery($sql);
if($line_member=mysql_fetch_array($result_member)){
extract($line_member);
} else {
header("location: index.php");
exit;
}
?>
La prima cosa da fare sarebbe probabilmente sostituire ogni
mysql_*
funzione di chiamata con il suo equivalentemysqli_*
, almeno se si è disposti a utilizzare il procedurali API-che sarebbe la via più facile, considerando che già hanno un codice, basato sulle API di MySQL, che è un procedurale.Per aiutare con questo, la L’Estensione MySQLi Funzione Di Riepilogo è sicuramente qualcosa che sarà utile.
Per esempio:
mysql_connect
sarà sostituito damysqli_connect
mysql_error
sarà sostituito damysqli_error
e/omysqli_connect_error
, a seconda del contestomysql_query
sarà sostituito damysqli_query
Nota: Per alcune funzioni, potrebbe essere necessario controllare i parametri con attenzione: Forse ci sono alcune differenze qua e là, ma non che molti, direi: mysql e mysqli sono basati sulla stessa libreria (libmysql ; almeno per PHP <= 5.2)
Per esempio:
mysql_select_db
una volta connesso, per indicare che i database che si desidera fare la tua querymysqli_connect
.mysqli_select_db
funzione che è possibile utilizzare, se si preferisce.Una volta che hai finito con questo, provare a eseguire la nuova versione dello script… E verificare se tutto funziona ; se non… il Tempo per la caccia di bug 😉
mysqli_*
procedurali funzioni primi due parametri passati. Vecchio stile eramysql_*(q, link, ...)
e nuovo stile èmysqli_*(link, q, ...)
.(Mi rendo conto che non è vecchio, ma è ancora in piedi…)
Se fai sostituire
mysql_*
conmysqli_*
poi tenere a mente che un intero carico dimysqli_*
funzioni è necessario il collegamento al database per essere passato.E. g.:
diventa
I. e., un sacco di controllo richiesto.
Il modo più semplice che ho sempre gestire questa Dove
3 procedura di sostituzione nel seguente ordine
Questo funziona per me, ogni volta che
function
stringhe e mettendo unglobal $con;
in cima alla funzione del contenuto, come$con
definito al di fuori della funzione non sarà disponibile per impostazione predefinita, grazie per la variabile del campo di applicazione in PHP.Vorrei provvisoriamente consiglia di utilizzare DOP per SQL access.
Allora è solo un caso di cambiare il driver e garantire SQL lavori per il nuovo backend. In teoria. La migrazione dei dati è un problema diverso.
Abstract accesso al database è grande.
In caso di progetti di grandi dimensioni, numero di file da modificare e anche se il progetto precedente versione di PHP 5.6 e il nuovo è 7.1, è possibile creare un nuovo file sql.php e includere nell’intestazione o da qualche parte si utilizza tutto il tempo e le esigenze di connessione sql. Per esempio:
Se avete un sacco di file per cambiare i tuoi progetti è possibile creare funzioni con lo stesso nome come funzioni di mysql,
e in funzioni di conversione come questo codice:
Ecco un tutorial su come fare bene e in fretta.
Io l’ho usato dopo l’aggiornamento di hosting per i miei clienti da 5.4 (OMG!!!) 7.x versione di PHP.
1. Definizione della connessione
Prima di tutto, è necessario mettere la connessione a una nuova variabile
$link
o$con
, o quello che si vuole.Esempio
Cambiare la connessione da :
o
a:
2. mysql_* modifica
Con Notepad++ io uso il “cerca nei file” (Ctrl + Shift + f) :
nel seguente ordine ho scelto “Sostituisci nei File” :
mysql_query( -> mysqli_query($con,
mysql_error() -> mysqli_error($con)
mysql_close() -> mysqli_close($con)
mysql_ -> mysqli_
3. rettifiche
se è possibile ottenere gli errori è forse perché la vostra con $non è accessibile dalle vostre funzioni.
È necessario aggiungere un
global $con;
in tutte le funzioni, per esempio :Speranza che aiuta.
Breve Versione della conversione di mysql a mysqli
Si può fare una messa trovare e sostituire usando notepad++ per i seguenti, ha funzionato per me:
Trovare: mysql_
Sostituire: mysqli_
Trovare: _query(
Sostituire: _query($conn,
Necessità di cambiare, ma dipende da come si esegue la connessione…
Aggiornamento stringa di connessione in config.php seguenti:
Spero che questo aiuta.