Twee GROOTSTE problemen met uw code en uw "oplossing":
- Je hebt
@exploitant overal. Waarvoor u -1 stem heeft op uw vraag.@operator is het kwaad zelf. IT is verantwoordelijk voor de lege pagina die je ziet. - De remedie die je kiest maakte de zaken echter erger. Dit "OF sterf"-ding is geen magisch gezang om een foutrapportageprobleem op te lossen. En oneigenlijk gebruik veroorzaakt fouten zoals je hebt. Waarvoor je
1. hebt in de foutmelding.
Allereerst is je opname in orde, dus laat het met rust.
Volg deze instructies om een foutmelding van mysqli te krijgen:
In plaats van willekeurig "of sterven" toe te voegen, heeft u een robuustere en behulpzamere oplossing voor foutrapportage nodig.
Als je mysqli_query() overal in de applicatiecode gebruikt zonder het in te kapselen in een of andere helperklasse, trigger_error() is een goede manier om een PHP-fout te melden, omdat het u ook het bestand en het regelnummer vertelt waar de fout is opgetreden
$res = mysqli_query($mysqli,$query) or trigger_error(mysqli_error($mysqli)."[$query]");
in al uw scripts
en sindsdien wordt u op de hoogte gesteld van de reden waarom het object niet is gemaakt. (Als u hier nieuwsgierig naar bent or syntaxis, Ik heb het hier uitgelegd
- het legt ook uit waarom je (1) . hebt in de foutmelding)
Echter , als je je query in een klasse inkapselt, zullen bestand en regel van trigger-fout behoorlijk nutteloos zijn omdat ze naar de aanroep zelf zullen verwijzen, niet naar de applicatiecode die een bepaald probleem veroorzaakte. Dus, wanneer mysqli-commando's ingekapseld worden uitgevoerd, moet een andere manier worden gebruikt:
$result = $mysqli->query($sql);
if (!$result) {
throw new Exception($mysqli->error." [$query]");
}
as Exception geeft je een stack trace , die u naar de plaats leidt van waaruit een foutieve zoekopdracht werd aangeroepen.
Merk op dat je PHP-fouten in het algemeen moet kunnen zien. Op een live site moet je in foutenlogboeken kijken, dus de instellingen moeten zijn
error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);
terwijl het op een lokale ontwikkelingsserver goed is om fouten op het scherm te maken:
error_reporting(E_ALL);
ini_set('display_errors',1);
en natuurlijk mag u nooit de operator voor het onderdrukken van fouten (@) vóór uw uitspraken gebruiken.