When I run the following code, I get the error saying
Fatal error: Uncaught exception \'mysqli_sql_exception\' with message \'No index used in que
Take a look at this bug-report : #35450 mysqli extension reports too many warnings
Quoting a few sentences of a note :
Mysqli extension throws too many warnings.
For example, "SELECT * FROM table" results in a warning: "Warning: mysqli::query(): No index used in query/prepared statement SELECT * FROM table ..."
And, quoting another note, which seems interesting :
Use
mysqli_report()
to disable that.
The fatal error is not in MySQL; the missing index notification is a relatively low-severity warning.
The fatal error is in your PHP code, because of the following three conditions:
mysqli_sql_exception
for all errors and warnings due to your mysqli_report(MYSQLI_REPORT_ALL);
line.try{}
block with an appropriate catch(){}
block), and uncaught exceptions are fatal.You can't do much about the first one, as mentioned in the other answer. So, you can fix it either by changing your mysqli_report(...)
setting to MYSQLI_REPORT_STRICT
or MYSQLI_REPORT_OFF
, or indeed anything other than MYSQLI_REPORT_ALL
.
(edit: w3d's comment below gives a good explanation why, and suggests you could use mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)
as a good alternative)
For best practices, and in combination with this, you should fix it properly by using try{}
and catch(){}
appropriately within your code.
Another way to fix it is to make your table column 'name' in MySQL an index.
ALTER TABLE `calc` ADD INDEX ( `name` ) ;
mysqli_report(MYSQLI_REPORT_ALL ^ MYSQLI_REPORT_INDEX);
Turns off "Report if no index or bad index was used in a query" yet keeps other reporting on.