Cela a été dit dans les commentaires, vous avez manqué les espaces réservés.
Donc, change :
$sql =
"UPDATE blog_posts
SET post_title='$post_title',
content='$content',
author_name='$author_name',
category='$category',
post_date='$post_date',
image='$image_name'
WHERE post_id='$id'";
à :
$sql =
"UPDATE blog_posts
SET post_title=?,
content=?,
author_name=?,
category=?,
post_date=?,
image=?
WHERE post_id=?";
C'est aussi simple que cela.
Le manuel contient la syntaxe appropriée :
N'oubliez pas de passer les arguments dans le bon ordre . Ils doivent être passés dans le même ordre qu'ils sont utilisés dans la requête (vous avez échangé l'image avec la date de publication), donc cela devrait être :
$stmt->bind_param("ssssisi", $post_title, $content, $author_name, $category, $post_date, $image_name, $id);