Ajout de données dans Postgre via php

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 : Ajout de données dans Postgre via php

Re: Ajout de données dans Postgre via php

par moogli » 13 janv. 2017, 11:52

@or1 : {$escaped} les {} permettent d'indiquer à php comment lever les incertitudes sur l’interprétation de la variable dans la chaîne de caractère.
c'est pur éviter cela que je préfère la concaténation (entre autre :) )

@fabrice88250 : affiche la requête sql et test la dans un client pg
<?php
echo '<pre>', $query,'</pre>';
est ce que ton html ne dépasserais pas la taille de ton champ en base?

j'abonde dans le sens de Zeus pour utiliser PDO :)


@+

Re: Ajout de données dans Postgre via php

par or 1 » 12 janv. 2017, 21:20

dans la doc, il y a
// Insertion dans la base de données
pg_query("INSERT INTO correspondence (name, data) VALUES ('Ma lettre', '{$escaped}')");
donc une syntaxe bien particulière.

Re: Ajout de données dans Postgre via php

par zeus » 12 janv. 2017, 20:43

Ajoutes un
var_dump(pg_last_error($dbconn))
dans ton else pour voir l'erreur détaillée

Sinon, tu peux aussi utiliser PDO pour que ça soit plus "error proof"

Ajout de données dans Postgre via php

par fabrice88250 » 12 janv. 2017, 18:54

Bonjour,
je me met doucement à posgresql par obligation et j'ai créé un petit formulaire pour ajouter des données dans un petite base test.

Code : Tout sélectionner

<form action="testajout.php" method="post" enctype="multipart/form-data"> <input name="type" type="text" /> <input name="description" type="text" /> <input name="submit" type="submit" value="Valider" />
pour ajouter les données dans la base PosGre mon testajout.php est le suivant :

Code : Tout sélectionner

<?php $dbconn = pg_connect("host=xxx port=xxx dbname=xxx user=xxx password=xxx") or die('Connexion impossible : ' . pg_last_error()); $type = pg_escape_string($_POST["type"]); $description = pg_escape_string($_POST["description"]); $query = "INSERT INTO tabletest (type, description) VALUES('".$type."','".$description."')"; if (pg_query($dbconn,$query)) echo "saved"; else echo "error insering data"; ?>
Jusque là sa fonctionne mais j'ai fait un autre test a remplacent par un champ texte dans mon formulaire la description.

Si je met dans ce champ texte du code html ou autre que du simple texte alors les données ne s'ajoutent plus dans la base même avec le pg_escape_string(... et comme message je n'ai que le "error insering data" qui s'affiche.

Savez vous comme je pourrait en savoir plus sur l'erreur ou alors peut être que ma façon d’intégrer les données n'est pas bonne ?