$sth est le retour de l'exécution de la méthode query() de l'objet $dbh

De plus, j'insite sur mon var_dump() pour savoir ce que retourne cette méthode query().
Bonjour,
J'ai passé ma soirée à relire mes bouquins:
PHP5 Avancé (Eyrolles)
Je me lance en PHP et MySQL (MicroApp)
Definitive Guide to SQLite (Apress)
MySQL - Guide de l'Administrateur et Guide officiel (MySQL ab)
ainsi que l'aide en ligne
Je me suis livré également à différents essais dont voici le résultat:
SQLite
Code
<?php
// Connexion à la base de données
try {
$dbh = new PDO("sqlite:mescontacts.db");
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
}
catch (PDOException $e){
die ("Erreur ! " . $e->getMessage());
}
echo '<p>A ce stade, la connection à la base <strong>mescontacts.db</strong> est réussie.</p>';
// Lecture d'enregistrements
$sql = 'SELECT * FROM contacts ORDER BY nom, prenoms';
$sth = $dbh->query($sql);
if($dbh->query($sql)===FALSE) {
echo '<p>La requête SQL est erronée</p>';
echo $sql;
exit();
}
// $res = $sth->fetch(PDO::FETCH_BOTH);
var_dump($sth);
foreach($sth as $row) {
print_r($row);
echo '<br/>';
}
// Fermeture de la connexion
$dbh = NULL;
?>
Résultat:
A ce stade, la connection à la base mescontacts.db est réussie.
Warning: PDO::query() [function.PDO-query]: SQLSTATE[HY000]: General error: 1 no such table: contacts in C:\www\dbtutor\sqlite_contacts.php on line 23
Warning: PDO::query() [function.PDO-query]: SQLSTATE[HY000]: General error: 1 no such table: contacts in C:\www\dbtutor\sqlite_contacts.php on line 24
La requête SQL est erronée
SELECT * FROM contacts ORDER BY nom, prenoms
Il va de soi que la base
mescontacts.db contient une table
contacts de sept champs, accessible par SQL Manager ou en ligne de commande, et que j'y ai placé quelques données tests.
Je précise que lorsque j'active la ligne
$res = $sth->fetch(PDO::FETCH_BOTH);
, sans la détection d'erreur PDO::query() j'obtiens une autre erreur:
Attempt to apply function fetch() on a non-member item
Autre tentative: J'ai aussi déplacé l'appel à la fonction var_dump($sth); pour qu'elle suive immédiatement l'affectation de $sth. Voici le nouvel output d'erreurs:
A ce stade, la connection à la base mescontacts.db est réussie.
Warning: PDO::query() [function.PDO-query]: SQLSTATE[HY000]: General error: 1 no such table: contacts in C:\www\dbtutor\sqlite_contacts.php on line 23
Résultat de var_dump($sth);.......bool(false)
Warning: PDO::query() [function.PDO-query]: SQLSTATE[HY000]: General error: 1 no such table: contacts in C:\www\dbtutor\sqlite_contacts.php on line 27
La requête SQL est erronée
SELECT * FROM contacts ORDER BY nom, prenoms
Dans aucun des bouquins dont je dispose il n'est question de déclarer la structure des données dans une classe, ni d'y développer des méthodes particulières. C'est pourquoi je suis complètement perdu.
MySQL
Je dispose des droits de superU et d'utilisateur lambda, ainsi que les mots de passe appropriés. J'accède à mes tables MySQL par phpmyAdmin ou en ligne de commande.
J'ai exporté cette table mescontacts.db dans MySQL par phpmyAdmin.
J'ai recopié le script ci-dessus dans un second fichier PHP appelé MySQL_contact.php, et j'ai spécifié l'utilisateur et son mot de passe (qui fonctionne avec phpmyAdmin). Cette fois je reçois une erreur de connexion:
Erreur ! SQLSTATE[28000] [1045] Access denied for user 'ODBC'@'localhost' (using password: NO)
Qu'en pensez-vous?
[quote="zeus"]$sth est le retour de l'exécution de la méthode query() de l'objet $dbh ;)
De plus, j'insite sur mon var_dump() pour savoir ce que retourne cette méthode query().[/quote]
Bonjour,
J'ai passé ma soirée à relire mes bouquins:
[b]PHP5 Avancé[/b] (Eyrolles)
[b]Je me lance en PHP et MySQL[/b] (MicroApp)
[b]Definitive Guide to SQLite[/b] (Apress)
[b]MySQL - Guide de l'Administrateur et Guide officiel[/b] (MySQL ab)
ainsi que l'aide en ligne
Je me suis livré également à différents essais dont voici le résultat:
[size=150][b]SQLite[/b][/size]
[b]Code[/b]
[php]<?php
// Connexion à la base de données
try {
$dbh = new PDO("sqlite:mescontacts.db");
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
}
catch (PDOException $e){
die ("Erreur ! " . $e->getMessage());
}
echo '<p>A ce stade, la connection à la base <strong>mescontacts.db</strong> est réussie.</p>';
// Lecture d'enregistrements
$sql = 'SELECT * FROM contacts ORDER BY nom, prenoms';
$sth = $dbh->query($sql);
if($dbh->query($sql)===FALSE) {
echo '<p>La requête SQL est erronée</p>';
echo $sql;
exit();
}
// $res = $sth->fetch(PDO::FETCH_BOTH);
var_dump($sth);
foreach($sth as $row) {
print_r($row);
echo '<br/>';
}
// Fermeture de la connexion
$dbh = NULL;
?>[/php]
[b]Résultat:[/b]
[quote]A ce stade, la connection à la base mescontacts.db est réussie.
Warning: PDO::query() [function.PDO-query]: SQLSTATE[HY000]: General error: 1 no such table: contacts in C:\www\dbtutor\sqlite_contacts.php on line 23
Warning: PDO::query() [function.PDO-query]: SQLSTATE[HY000]: General error: 1 no such table: contacts in C:\www\dbtutor\sqlite_contacts.php on line 24
La requête SQL est erronée
SELECT * FROM contacts ORDER BY nom, prenoms[/quote]
Il va de soi que la base [b]mescontacts.db[/b] contient une table [b]contacts[/b] de sept champs, accessible par SQL Manager ou en ligne de commande, et que j'y ai placé quelques données tests.
Je précise que lorsque j'active la ligne [php]$res = $sth->fetch(PDO::FETCH_BOTH);[/php], sans la détection d'erreur PDO::query() j'obtiens une autre erreur: [quote]Attempt to apply function fetch() on a non-member item[/quote]
[b]Autre tentative: [/b]J'ai aussi déplacé l'appel à la fonction var_dump($sth); pour qu'elle suive immédiatement l'affectation de $sth. Voici le nouvel output d'erreurs:
[quote]A ce stade, la connection à la base mescontacts.db est réussie.
Warning: PDO::query() [function.PDO-query]: SQLSTATE[HY000]: General error: 1 no such table: contacts in C:\www\dbtutor\sqlite_contacts.php on line 23
Résultat de var_dump($sth);.......bool(false)
Warning: PDO::query() [function.PDO-query]: SQLSTATE[HY000]: General error: 1 no such table: contacts in C:\www\dbtutor\sqlite_contacts.php on line 27
La requête SQL est erronée
SELECT * FROM contacts ORDER BY nom, prenoms[/quote]
Dans aucun des bouquins dont je dispose il n'est question de déclarer la structure des données dans une classe, ni d'y développer des méthodes particulières. C'est pourquoi je suis complètement perdu.
[size=150][b]MySQL[/b][/size]
Je dispose des droits de superU et d'utilisateur lambda, ainsi que les mots de passe appropriés. J'accède à mes tables MySQL par phpmyAdmin ou en ligne de commande.
J'ai exporté cette table mescontacts.db dans MySQL par phpmyAdmin.
J'ai recopié le script ci-dessus dans un second fichier PHP appelé MySQL_contact.php, et j'ai spécifié l'utilisateur et son mot de passe (qui fonctionne avec phpmyAdmin). Cette fois je reçois une erreur de connexion:
[quote]Erreur ! SQLSTATE[28000] [1045] Access denied for user 'ODBC'@'localhost' (using password: NO)[/quote]
Qu'en pensez-vous?