Mysql
 sql >> Database >  >> RDS >> Mysql

mysqli_connect Errore irreversibile:require()

Due problemi PIÙ GRANDI con il tuo codice e la tua "soluzione":

  1. Hai @ operatore dappertutto. Per il quale hai un voto -1 alla tua domanda. @ l'operatore è il male stesso. L'IT è responsabile della pagina vuota che vedi.
  2. Tuttavia, il rimedio che hai scelto ha peggiorato le cose. Questa cosa "O muori" non è un canto magico per risolvere qualsiasi problema di segnalazione degli errori. E l'uso improprio causerà errori come uno che hai. Per cui hai 1 nel messaggio di errore.

Prima di tutto, la tua inclusione va bene, quindi lasciala stare.

Mentre per ricevere un errore da mysqli, segui queste istruzioni:

Invece di aggiungere "o muori" in modo casuale, hai bisogno di una soluzione di segnalazione degli errori più solida e utile.

Se stai usando mysqli_query() su tutto il codice dell'applicazione senza incapsularlo in una classe helper, trigger_error() è un buon modo per sollevare un errore PHP, poiché ti dirà anche il file e il numero di riga in cui si è verificato l'errore

$res = mysqli_query($mysqli,$query) or trigger_error(mysqli_error($mysqli)."[$query]");

in tutti i tuoi script
e da allora ti verrà comunicato il motivo, per cui l'oggetto non è stato creato.(Se sei curioso di questo or sintassi, L'ho spiegato qui - spiega anche perché hai (1) nel messaggio di errore)

Tuttavia , se stai incapsulando la tua query in una classe, il file e la riga dall'errore di trigger saranno abbastanza inutili in quanto punteranno alla chiamata stessa, non al codice dell'applicazione che ha causato determinati problemi. Quindi, quando si eseguono comandi mysqli incapsulati, è necessario utilizzare un altro modo:

$result = $mysqli->query($sql);
if (!$result) {
    throw new Exception($mysqli->error." [$query]");
}

poiché Exception ti fornirà una traccia dello stack , che ti condurrà al luogo da cui è stata chiamata una query errata.

Nota che devi essere in grado di vedere gli errori PHP in generale. Su un sito live devi sbirciare nei log degli errori, quindi le impostazioni devono essere

error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);

mentre su un server di sviluppo locale va bene commettere errori sullo schermo:

error_reporting(E_ALL);
ini_set('display_errors',1);

e ovviamente non dovresti mai usare l'operatore di soppressione degli errori (@) davanti alle tue affermazioni.