Det fatala felet finns inte i MySQL; det saknade indexmeddelandet är en varning med relativt låg stränghet.
Den dödliga fel finns i din PHP-kod, på grund av följande tre villkor:
- mysqli rapporterar mycket av varningar, även för relativt ofarliga förhållanden.
- Du kastar
mysqli_sql_exception
för alla fel och varningar på grund av dinmysqli_report(MYSQLI_REPORT_ALL);
rad. - Din PHP-kod fångar inte det undantaget (dvs. den är inte i ett
try{}
block med en lämpligcatch(){}
block), och oupptäckta undantag är dödliga.
Du kan inte göra så mycket åt det första, som nämnts i det andra svaret. Så du kan fixa det antingen genom att ändra din mysqli_report(...)
inställning till MYSQLI_REPORT_STRICT
eller MYSQLI_REPORT_OFF
, eller faktiskt något annat än MYSQLI_REPORT_ALL
.
(edit:w3ds kommentar nedan ger en bra förklaring till varför, och föreslår att du kan använda mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)
som ett bra alternativ)
För bästa praxis, och i kombination med detta, bör du fixa det ordentligt genom att använda try{}
och catch(){}
lämpligt i din kod.