2010-09-30 9 views
0

En réponse à ma question précédente, je pense avoir découvert quelle partie ne fonctionne pas correctement. J'ai une petite section de code PHP qui utilise un objet PDO pour ajouter à une base de données sqlite3 qui est utilisée dans un appel AJAX.PHP PDO obj fonctionne sur PHP CLI, mais pas quand on accède à la page

Lorsque ce code est exécuté à l'aide de php cli en émettant la commande: "php add.php" tout fonctionne comme prévu et ajoute et entre dans la table. Cependant, lorsque j'accède à ce fichier php par son adresse web, rien n'est ajouté à la table.

$base = new PDO('sqlite:todo.db'); 
$sql = $base->prepare("INSERT INTO Tasks (content) VALUES ('testdata');"); 
$sql->execute(); 
echo "done"; 

"done" apparaîtra sur la ligne de commande, ainsi que sur la page Web. Quelqu'un peut-il m'expliquer ce comportement étrange?

+0

Jetez dans 'print_r ($ base-> errorInfo())' à la fin pour voir quelles informations il fournit. – webbiedave

+0

Activer tous les rapports d'erreurs possibles avec 'error_reporting (E_ALL); ini_set ('dispaly_errors', 1) 'et vérifier les erreurs PDO après la création, la préparation et l'exécution avec l'erreur PDO appropriée obtenant des fonctions. – Fanis

Répondre

4

Il y a beaucoup d'explications possibles à cela, mais je me risquerai à deviner que l'utilisateur web n'a pas accès à écrire dans le fichier de base de données sqlite.

+0

Wow, simple comme ça hein? Je ne peux pas croire que j'ai passé 2 jours à essayer de résoudre ce problème et je n'ai pas envisagé cette possibilité. Merci beaucoup! – Kevin

+1

De rien. Est-ce le bon moment pour vous conseiller * pas * d'utiliser sqlite pour une webapp, parce que cela ne résout pas bien (par exemple) avec des utilisateurs simultanés? – troelskn

Questions connexes