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

SQLite Discussion :

SQLite3 - Débutant avec PHP - problème de connexion et INSERT


Sujet :

SQLite

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut SQLite3 - Débutant avec PHP - problème de connexion et INSERT
    Bonjour,
    je débute avec SQLite3 pour une mini WebAppli sous PHP 7.4

    Pas de souci en lignes de commande :
    (même si je ne comprends pas le non fonctionnement des clause DEFAULT... )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    root@SRV-DEBIAN:~# sqlite3 dashboard.db;
    SQLite version 3.34.1 2021-01-20 14:10:07
    Enter ".help" for usage hints.
     
    sqlite> CREATE TABLE IF NOT EXISTS affectation (rfc VARCHAR(10) PRIMARY KEY, technicien VARCHAR(30) NOT NULL, date_creation date DEFAULT CURRENT_TIMESTAMP, date_modifcation date DEFAULT NULL);
     
    sqlite> INSERT INTO affectation VALUES ('RFC1234567', 'moi');        
    Error: table affectation has 4 columns but 2 values were supplied
    sqlite> INSERT INTO affectation VALUES ('RFC1234567', 'moi', '2023-04-16 13:13:13');
    Error: table affectation has 4 columns but 3 values were supplied
    sqlite> INSERT INTO affectation VALUES ('RFC1234567', 'moi', '2023-04-16 13:13:13', NULL);
    sqlite> INSERT INTO affectation VALUES ('RFC1234568', 'moi', '2023-04-16 13:13:13', NULL);
     
    sqlite> SELECT * FROM affectation;
    RFC1234567|moi|2023-04-16 13:13:13|
    RFC1234568|moi|2023-04-16 13:13:13|
    par contre en PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    $dbname = '/root/dashboard.db';
    $table ="affectation";
     
    if (!class_exists('SQLite3'))
        die("SQLite 3 NOT supported.");
     
    $db = new SQLite3($dbname, 0666);
    if(!$db){
    	die($db->lastErrorMsg());
    } else {
        echo "Opened database successfully\n";
    }
     
    $query = "INSERT INTO affectation VALUES ('RFC1234569', 'moi', '2023-04-16 13:13:13', NULL)";
    $results = $db->exec($query);
    if ($results === FALSE) {
        die("La requête a échouée");
    } else {
        echo "Un nouvel enregistrement a été ajouté à la base";
    }
    ?>
    j'obtiens l'erreur :
    Opened database successfully
    Warning: SQLite3::exec(): no such table: affectation in /home/dashboard/public/sqlite3.php on line 33
    La requête a échouée
    A noter que j'ai l'erreur (que je ne comprends pas non plus) :
    Fatal error: Uncaught Exception: Unable to open database: unable to open database file in /home/dashboard/public/sqlite3.php:18 Stack trace: #0 /home/dashboard/public/sqlite3.php(18): SQLite3->__construct() #1 {main} thrown in /home/dashboard/public/sqlite3.php on line 18
    lorsque je me connecte à la base sans le flag 0666 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db = new SQLite3($dbname);
    Des idées ?
    Merci pour votre aide

  2. #2
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Je viens de me rendre compte après 2H de test que new SQLite3() ne retourne rien !
    et qu'en faite la connexion à la base n'était pas effective...
    Du coup voici mon nouveau code de connexion qui fonctionne (le SELECT aussi) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class MyDB extends SQLite3 {
        function __construct() {
            $this->open('/home/dashboard/public/dashboard.db', SQLITE3_OPEN_READWRITE);
        }
    }
    try {
        $db = new MyDB();
    } catch (Exception $e) {
        echo 'Caught exception: ' . $e->getMessage();
        die();
    }
    Maintenant j'ai un souci avec le INSERT :
    Warning: SQLite3::exec(): attempt to write a readonly database in /home/dashboard/public/sqlite3.php on line 85
    pourtant
    • le fichier de ma base a les permissions 666 et se trouve maintenant à la racine du vhost.
    • et la connexion SQLite s'effectue en RW : SQLITE3_OPEN_READWRITE



  3. #3
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    bon... il suffisait simplement de mettre également des droits sur le dossier...

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 18/05/2011, 09h34
  2. [Wamp] Débutant en php : problème avec xampp
    Par Alphonse Capriani dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 30/01/2011, 17h05
  3. [PHP] Probléme de Connexion Espace Membre
    Par Adaeria dans le forum Langage
    Réponses: 3
    Dernier message: 04/12/2009, 11h38
  4. [AS3] URLRequest pour parler avec php, problème
    Par devtroll dans le forum ActionScript 3
    Réponses: 5
    Dernier message: 01/08/2007, 00h08
  5. [ postgresql - php ] problèmes de connexion a une base
    Par diableblanc dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 12/07/2005, 19h27

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