Great script, well commented! Though, I have a problem implementing the edit and delete part. I followed your code and adapted to my needs, but seems that in both cases something is happening when getting 'id' from the URL and checking it is numeric.
For example in edit.php
// get the 'id' value from the URL (if it exists), making sure that it is valid (checking that it is numeric/larger than 0)
if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0)
All I get is an error message
// if the 'id' in the URL isn't valid, or if there is no 'id' value, display an error
I don't know why is happening this, as in my create-table.sql 'id' is defined as
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT