Bonjour,

je rencontre un problème avec mon blog et je sais pas à quoi cela est dû. je suis à la 32minute chapitre BACK-END de la formation POO en PHP, je suis suis confronté à ce message d'erreur après la soumission de mon formulaire pour effectuer un UPDATE.. je tiens à préciser que la modification s'effectue bien dans la base de donnée mais ce reçois le message d'erreur ci dessous..

Ce que je fais

edit.php

Entourez votr<?php
use \Core\html\BootstrapForm;

$postTable = App::getInstance()->getTable('Post');

if(!empty($_POST)){
  $result = $postTable->update($_GET['id'], [
        'titre' => $_POST['titre'],
        'contenu' => $_POST['contenu']
    ]);
  if($result){
?>
      <div class="alert alert-success">L'article a bien été modifié</div>

<?php
  }

}

$post = $postTable->find($_GET['id']);
$form = new BootstrapForm($post);

?>

<form method="post">
    <?= $form->input('titre', 'Titre de l\'article'); ?>
    <?= $form->input('contenu', 'Contenu',['type' => 'textarea']); ?>
    <button class="btn btn-primary">Modifier</button>

</form>e code pour bien le mettre en forme

<?php

namespace Core\Database;

use \PDO;

class MysqlDatabase extends Database
{
private $db_name;
private $db_user;
private $db_pass;
private $db_host;
private $pdo;

public function __construct($db_name, $db_user = 'root', $db_pass ='', $db_host ='locahost')
{
    $this->db_name = $db_name;
    $this->db_user = $db_user;
    $this->db_pass = $db_pass;
    $this->db_host = $db_host;
}

private function getPDO(){
    if($this->pdo === null){
        $pdo = new PDO('mysql:dbname=blog_poo;host=localhost', 'root', '' );
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $this->pdo = $pdo;
    }
    return $this->pdo;
}

public function query($statement, $class_name = null, $one = false){
    $req = $this->getPDO()->query($statement);
    if(
        strpos($statement, 'UPDATE') === 0 ||
        strpos($statement, 'INSERT') === 0 ||
        strpos($statement, 'DELETE') === 0
    ) {
        return $req;
    }
    if($class_name === null){
        $req->setFetchMode(PDO::FETCH_OBJ);
    }else{
        $req->setFetchMode(PDO::FETCH_CLASS, $class_name);
    }

    if($one){
        $datas = $req->fetch();
    }else {
        $datas = $req->fetchAll();
    }
    return $datas;
}

public function prepare($statement, $attributes, $class_name = null, $one = false){
    $req = $this->getPDO()->prepare($statement);
    $res = $req->execute($attributes);
    if(
        strpos($statement, 'UPDATE') === 0 ||
        strpos($statement, 'INSERT') === 0 ||
        strpos($statement, 'DELETE') === 0
    ) {
        return $res;
    }
    if($class_name === null){
        $req->setFetchMode(PDO::FETCH_OBJ);
    }else{
        $req->setFetchMode(PDO::FETCH_CLASS, $class_name);
    }
    if($one){
        $datas = $req->fetch();
    }else {
        $datas = $req->fetchAll();
    }
    return $datas;

}

}

Ce que je veux

voir vidéo 32:13 min du chapitre back-end

Ce que j'obtiens

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error in C:\xampp\htdocs\PooPhpComplet\core\database\MysqlDatabase.php:71 Stack trace: #0 C:\xampp\htdocs\PooPhpComplet\core\database\MysqlDatabase.php(71): PDOStatement->fetch() #1 C:\xampp\htdocs\PooPhpComplet\core\table\Table.php(51): Core\Database\MysqlDatabase->prepare(' UPDATE article...', Array, 'App\Entity\Post...', true) #2 C:\xampp\htdocs\PooPhpComplet\core\table\Table.php(38): Core\Table\Table->query(' UPDATE article...', Array, true) #3 C:\xampp\htdocs\PooPhpComplet\pages\admin\posts\edit.php(10): Core\Table\Table->update('1', Array) #4 C:\xampp\htdocs\PooPhpComplet\public\admin.php(27): require('C:\xampp\htdocs...') #5 {main} thrown in C:\xampp\htdocs\PooPhpComplet\core\database\MysqlDatabase.php on line 71

Aucune réponse