Besoin d'aide : code d'erreur : Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Besoin d'aide : code d'erreur : Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter

Re: Besoin d'aide : code d'erreur : Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: param

par Maitrepylos » 25 févr. 2022, 11:40

Pour être un peu plus précis

Quand vous faites

Code : Tout sélectionner

$send->execute(array( "publication" => $_POST["posts"] ?? "", "id_users" => $_GET['id'] ?? "", "date_posts" => $_POST["date_posts"] ?? "")); }
Il manque une données dans un des trois éléménts, le id_users, ne peux être vide par exemple.
ceci devrais mieux passer

Code : Tout sélectionner

[code] $send->execute(array( "publication" => $_POST["posts"] ?? null, "id_users" => $_GET['id'], "date_posts" => $_POST["date_posts"] ?? null)); }

[/code]

Re: Besoin d'aide : code d'erreur : Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: param

par ynx » 22 févr. 2022, 14:26

Bonjour,

Il faut revoir un cours/tuto sur l'utilisation des requêtes préparées.
Tu as 3 paramètres nommés dans ta requête sql (:id_users, :posts, :date_posts), tu dois donc définir la valeur pour chacun de ses paramètres dans le tableau passé à la méthode execute().

Bonne journée,

Re: Besoin d'aide : code d'erreur : Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: param

par Fleur4477 » 21 févr. 2022, 21:59

"... :id_users, :posts, :date_posts ..."

"array(
"publication" => ...,
"id_users" => ...,
"date_posts" => ...)"

l'explication : "parameter was not defined" est logique.
Merci pour ta réponse or 1,
mais je n'ai pas compris tu pourrais m'expliquer stp :/

Le php est tout nouveau pour moi

Re: Besoin d'aide : code d'erreur : Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: param

par or 1 » 21 févr. 2022, 19:56

"... :id_users, :posts, :date_posts ..."

"array(
"publication" => ...,
"id_users" => ...,
"date_posts" => ...)"

l'explication : "parameter was not defined" est logique.

Besoin d'aide : code d'erreur : Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter

par Fleur4477 » 21 févr. 2022, 19:51

Bonjour, depuis maintenant 1h j'ai un problème quand j'appuie pour envoyer mon formulaire et ajouter les données dans ma base de donnée cela ne fonctionne pas et il m'affiche :

Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\MAMP\htdocs\twitter\tweet.php:48 Stack trace: #0 C:\MAMP\htdocs\twitter\tweet.php(48): PDOStatement->execute(Array) #1 {main} thrown in C:\MAMP\htdocs\twitter\tweet.php on line 48

J'ai vraiment besoin d'aide svp

Voici mon code en question, j'espère que vous pourriez m'aider.
<?php
session_start();
//require 'log.php';
try {
    $database = new PDO('mysql:host=localhost;dbname=twitter2','root','root');
    $database -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e){
        die ('Site indisponible');
    }
if(isset($_GET['id']) AND $_GET['id'] > 0)
{
    $requser = $database->prepare('SELECT * FROM users WHERE id =?');
    $requser->execute(array($_GET['id']));
    $userinfo = $requser->fetch();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style2.css">
    <title>Document</title>
</head>
<body>
    <h1 id="twitter">BIENVENUE SUR TWITTER</h1>

    <p>Profil de : <?php echo $userinfo['pseudo']; ?> </p>
    <?php echo $_GET['id'];
    ?>
    <?php require 'tweet_bar.php'; ?>
    
    <?php

    if($_SERVER["REQUEST_METHOD"] == "POST" && $_POST["post"] == "post_text"){
        if(!empty($_POST["publication"])){
            
            $send = $database->prepare('SELECT * FROM tweet');
            $send->execute();
            $postinfo = $send->fetch();

            $send = $database->prepare("INSERT INTO tweet (id_users, posts, date_posts) VALUES (:id_users, :posts, :date_posts)");
            
            $send->execute(array(
                "publication" => $_POST["posts"] ?? "",
                "id_users" => $_GET['id'] ?? "",
                "date_posts" => $_POST["date_posts"] ?? ""));


        } else{
            echo "Pour publier vous devez écrire un message";
        }
    }

?>
</body>
</html>
<?php
}
?>