Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/04/2007, 21h36   #1
Invité régulier
 
Homme Patrick
Développeur Web
Inscription : février 2005
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : février 2005
Messages : 58
Points : 6
Points : 6
Par défaut [SQLite] update en sqlite

bonjour,

j'ai un souci avec une requete update que je dois faire conjointement sur une base mysql et sur sqlite. avec la même requete sous mysql aucun souci tout fonctionne normalement, c'est sous sqlite le problème.

voici mon code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
  //récupération des variables du formulaire
   $nom = $_GET['nom'];
   $prenom = $_GET['prenom'];
   $email = $_GET['email'];
   $id = $_GET['id'];
 
   //connexion à la base
   if ($db = sqlite_open("gestion_adresses", 0666, $erreur))
    {
        //update de l'enregistrement
        $req = "update adresse set nom='$nom', prenom='$prenom',    email='$email' where adresse_ID='$id'";
        sqlite_query($db, $req) or die("la modification à échouée ");
        echo "la modification a été effectuée";
    }
    else
        die($erreur);
   //fermeture de la base
   sqlite_close($db);
?>
aucun retour d'erreur sur la requete et pourtant la modification n'est pas effectuée.
débutant sur sqlite y a t il des différences de syntaxe ou spécificités concernant ce problème ?

merci
patk29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2007, 00h15   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
D'après les informations glanées dans la documentation :
  • Vous devriez protéger vos données avec la fonction sqlite_escape_string
  • Obtenir un message d'erreur avec sqlite_error_string(sqlite_last_error($db)) ou utiliser le paramètre optionnel de la fonction sqlite_query prévu à cet effet
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 16h59   #3
Invité régulier
 
Homme Patrick
Développeur Web
Inscription : février 2005
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : février 2005
Messages : 58
Points : 6
Points : 6
j'ai essayé toutes les formes possibles avec sqlite_escape_string autour de la forme suivante :

Code :
1
2
3
4
5
6
7
8
9
10
 
$db = sqlite_open("gestion_adresses", 0666, $err);
$requete = "update adresse set ";
$requete.= "nom='".sqlite_escape_string($nom)."', ";
$requete.= "prenom='".sqlite_escape_string($prenom)."', ";
$requete.= "email='".sqlite_escape_string($email)."' ";
$requete.= "where adresse_ID='".$_GET['clause']."'";
$res = sqlite_query($db, $requete, $erreur);
echo $erreur;
sqlite_close($db);
toujours aucun retour d'erreur et la modification n'est toujours pas effectuée dans la table.
pourquoi est ce aussi bordelique de parser les requetes en sqlite ?
qui a une solution?
merci
patk29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 17h38   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Avez-vous exécuté votre requête avec un outil (client sqlite, SQLiteManager ou autres) ? Que donne un var_dump($res) (à placer juste après sqlite_query) ?

Est-ce que vous avez essayé avec PDO (si vous avez ça) ? Le code donnerait quelque chose comme :
Code :
1
2
3
4
5
6
7
8
9
<?php
$db = new PDO('sqlite:gestion_adresses');
$count = $dbh->exec('update adresse set nom=' . $db->quote($nom) . ', prenom=' . $db->quote($prenom) . ', email=' . $db->quote($email) . ' where adresse_ID=' . $db->quote($_GET['clause']) . ';');
if ($count === FALSE) {
    die($db->errorCode());
} else {
    echo "$count lignes modifiées";
}
?>
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 11h32   #5
Invité régulier
 
Homme Patrick
Développeur Web
Inscription : février 2005
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : février 2005
Messages : 58
Points : 6
Points : 6
avec cette méthode j'ai le code HY000 qui s'affiche
et avec var_dump : string(102)
patk29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2007, 17h08   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
102, ça correspond à quoi ? Ce n'est pas un message d'erreur : les numéros s'arrêtent à 101. Il vous aurait modifié 102 lignes ?

PDO ne nous en apprendra pas plus : il regroupe 90% des erreurs SQLite sous l'étiquette HY000 mais il y aurait bel et bien une erreur

Etes-vous à jour ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2007, 08h36   #7
Invité régulier
 
Homme Patrick
Développeur Web
Inscription : février 2005
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Patrick
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : février 2005
Messages : 58
Points : 6
Points : 6
problème résolu

un caractère parasite renvoyé par le formulaire pertubait la requete et celui ci n'apparaissait pas dans le echo de la requete.
bizarrement, la requete étant exécutée conjointement sous MySql et Sqlite cela ne pertubait pas MySql outre mesure mais seulement Sqlite.
ce qui m'a fait focaliser sur sqlite et pas sur les données envoyées par le formulaire.

merci pour l'aide en tout cas
patk29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h15.


 
 
 
 
Partenaires

Hébergement Web