IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

insert avec date du jour et une autre donnée


Sujet :

Requêtes MySQL

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut insert avec date du jour et une autre donnée
    Bonjour,
    j'ai une table MYSQL avec cette structure :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `t_actus` (
      `id_actus` int NOT NULL AUTO_INCREMENT,
      `texte_actus` text,
      `date_actus` date DEFAULT NULL,
      PRIMARY KEY (`id_actus`)
    ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
    SELECT * FROM arnaud.t_actus;
    Je voudrais donc y insérer un enregistrement. Je fais la requête suivante :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      $sql = <<<sql
    INSERT INTO t_actus (texte_actus, data_actus)
        VALUES( {$_POST('actu')},NOW()  )
    sql;
    Voici mon formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action="/create_actu_in_bdd" method="post">
        <textarea name="actu" id="actu"><?= "Votre actu" ?></textarea><br/>
        <input type="submit" value="Créer votre actu"/>
    </form>
    mais il est pas content :
    Fatal error: Uncaught Error: Array callback must have exactly two elements in C:\projets\arnaudpoo\src\controller\ActuCreateInBDD.php:18 Stack trace: #0 C:\projets\arnaudpoo\index.php(36): PasDePanique\controller\ActuCreateInBDD->invoke(Array) #1 {main} thrown in C:\projets\arnaudpoo\src\controller\ActuCreateInBDD.php on line 18
    Quelle est l'erreur, SVP ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    $_POST('actu')
    $_POST est un tableau, on accède à ses éléments avec [] et non ()
    => $_POST['actu']

    Affiche $sql, tu verras que la valeur de la colonne texte_actus n'est pas délimitée
    => Il faut utiliser $pdo->quote() sur chaque valeur passée en paramètre
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    M'être trompé dans la syntaxe de $_POST confirme mon statut d'éternel débutant...

    Affiche $sql, tu verras que la valeur de la colonne texte_actus n'est pas délimitée
    => Il faut utiliser $pdo->quote() sur chaque valeur passée en paramètre
    Si je faisais du PDO standard, ça serait vrai, mais avec PDOPlusPlus, l'excellente bibliothèque de rawsrc, c'est bon...

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ppp = new PDOPlusPlus();
        $sql = <<<sql
    INSERT INTO t_actus (texte_actus,date_actus)
        VALUES( {$ppp($_POST['actu'])} , NOW())
    sql;
        $id = $ppp->insert($sql);
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/07/2015, 11h59
  2. [AC-2003] INSERT INTO avec recuperation d'ID d'une autre table
    Par nougitch dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 31/01/2013, 23h42
  3. [XL-2007] MACROS ET USEFORM avec date du jour et renvoi à une ligne
    Par nabulios dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/12/2012, 15h57
  4. WSS 3.0 Comment mettre une colonne avec date du jour
    Par aurel80 dans le forum SharePoint
    Réponses: 5
    Dernier message: 31/07/2009, 15h12
  5. Réponses: 2
    Dernier message: 24/03/2009, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo