Ajout de données dans Postgre via php

Mammouth du PHP | 620 Messages

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 ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

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"
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 2703 Messages

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

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 :)


@+
Il en faut peu pour être heureux ......