[PHP] J'ai une question très simple ! Help !!

Salut !

Je suis sous Mac et j'utilise MAMP. Je voudrais voir si le pdo est activé. Pour ça, je vais dans le fichier php.ini mais je ne trouve pas la ligne "extension=php_pdo_mysql.dll". Par contre j'ai vu cette ligne là : "extension=pdo_mysql.so".

Est ce que la ligne que je vous ai cité en dernier est la bonne ligne pour activer le PDO ?

Merci d'avance !

8 réponses

  1. Et bien voilà, PDO c'est un genre de class, les class sont instanciers avec
    include 'classname.php';
    $var = new ClassName();

    classname.php contiendra la class ClassName() qui contient des proprietés des fonctions par exemple:

    class Classname {
    function hello() {
    return "Hello World";
    }
    }

    Donc $var = new ClassName();
    echo $var->hello(); produira Hello World;

    La même chose avec le PDO, PDO c'est une class qui contient des fonctions (connect ...etc) que tu utilisera pour retrouver les donnés
    PDO est inclue dans PHP par default donc $pdo = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password); directement.

    J'éspère que ça t'aide un peu.
    Tiens moi au courant si tu veux en apprendre plus.
    1. Mais qu'est ce que ça veut dire instancier ?
      1. Et bien tu as vu le code que je viens e te donner, c'est de l'instanciation. Tu appel le driver PDO,
        new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password);
      2. comment ça appeler le driver PDO ?
      3. Et bien, PDO c'est un driver, un outil avec lequel tu peux te connecter à la base de donnés et retrouver les donnés. L'instancier c'est tout simplement l'utiliser
      4. Ah mais quand tu l'instancifie, c'est quand tu vérifies si tu es bien connecté (enfin, si ton code a bien fonctionné) ?
    2. Il est activé, essaie de l'instancier.

      try { 
          $conn = new PDO('mysql:host=localhost;dbname=myDatabase', $username, $password); 
          $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      } catch(PDOException $e) { 
          echo 'ERREUR: ' . $e->getMessage(); 
      }
      1. J'ai essayé le code et ça ne me mettait rien. Donc c'est que PDO doit bien être installé. Mais c'est peut-être qu'il n'est pas activé.
        1. Vérifie d'abord qu'il n'est pas installé
          if (!defined('PDO::ATTR_DRIVER_NAME')) { 
          echo 'PDO unavailable'; 
          } 
          


          du manuel php:
          PDO and the PDO_SQLITE driver is enabled by default as of PHP 5.1.0

          Si tu as PHP > 5.1.0 il est forcement installé, en plus tu utilise MAMP, je vois pas comment PDO ne pourrais pas être installé.
          1. tu peux aussi faire <?php echo phpinfo(); ?>
        2. Salut,

          je ne trouve pas le dossier ext. J'ai par contre trouvé le dossier extension, qui ne contenait malheureusement pas pdo.so. Par contre il y avait d'autres fichiers qui ressemblait à ce que tu m'as dit.
          Voici un screenshot : https://i.imgur.com/E3nKs.png
          Au faite, dans le dossier extensions il y a un autre dossier appelé "no-debug-non-zts-20090626".

          Dans le fichier php.ini, il n'y avait pas les lignes que tu m'as citées. Il y avait ça par contre :
          ;extension=apc.so
          
          extension=imap.so
          extension=yaz.so
          extension=mcrypt.so
          extension=gettext.so
          extension=pgsql.so
          extension=pdo_pgsql.so
          extension=pdo_mysql.so


          Voilà, c'est tout.

          P.S.: Dans le code qui me permet de me connecter à ma BDD, j'ai fait un script qui écrit l'erreur sur ma page. Et ça me met ça : SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
          1. Vérifie d'abord qu'il n'est pas instalé
            if (!defined('PDO::ATTR_DRIVER_NAME')) {
            echo 'PDO unavailable';
            }
            
        3. Vérifier dans ton dossier d'extensions (le dossier s'appelle "ext") si le fichier "pdo.so" est présent.
          Ensuite vérifier que les lignes suivantes sont présentes dans le php.ini :

          extension=pdo.so
          extension=pdo_pgsql.so
          extension=pdo_mysql.so

          Et question simple aussi :

          as-tu tout simplement essayé d'instancier une pdo?(je suppose que oui)

          Si ca marche -> PDO est activé sur MAMP
          Si ca marche pas -> télécharge le fichier pdo.so et ajoute les lignes que j'ai cité au dessus.