342 votes

mysqli ou AOP - quels sont les avantages et les inconvénients?

À notre place, nous sommes à la scission entre l'utilisation de mysqli et PDO pour des choses comme les déclarations préparées à l'avance et le support des transactions. Certains projets utilisent un l'autre. Il est peu réaliste de la probabilité de passer à un autre SGBDR.

Je préfère PDO pour la simple raison qu'il permet à des paramètres nommés pour les déclarations préparées à l'avance, et pour autant que je suis conscient mysqli n'est pas.

Existe-il d'autres avantages et les inconvénients du choix de l'un sur l'autre comme un standard que nous consolidons nos projets pour n'utiliser qu'une seule approche?

243voto

e-satis Points 146299

Eh bien, vous pourriez discuter avec l'objet orientée aspect, les déclarations des victimes, le fait qu'il devient une norme, etc. Mais je sais que la plupart du temps, de convaincre quelqu'un, il fonctionne mieux avec une killer feature. C'est donc là:

Une très belle chose avec PDO est que vous pouvez récupérer les données, l'injecter automatiquement dans un objet. Si vous ne souhaitez pas utiliser un ORM (parce que c'est un juste un petit script) mais que vous n'aimez pas l'objet de la cartographie, c'est VRAIMENT cool :

class Student {

    public $id;
    public $first_name;
    public $last_name

    public function getFullName() {
        return $this->first_name.' '.$this->last_name
    }
}

try 
{
    $dbh = new PDO("mysql:host=$hostname;dbname=school", $username, $password)

    $stmt = $dbh->query("SELECT * FROM students");

    /* MAGIC HAPPENS HERE */

    $stmt->setFetchMode(PDO::FETCH_INTO, new Student);


    foreach($stmt as $student)
    {
        echo $student->getFullName().'<br />';
    } 

    $dbh = null;
}
catch(PDOException $e)
{
    echo $e->getMessage();
}

57voto

Theo Points 60103

Déplacer une application à partir d'une base de données à un autre n'est pas très commun, mais tôt ou tard, vous pourriez vous retrouver à travailler sur un autre projet à l'aide d'un autre SGBDR. Si vous êtes à la maison avec PDO alors il y aura au moins une chose de moins à apprendre à ce point.

En dehors de cela je trouve l'API PDO un peu plus intuitive, et il se sent plus vraiment orientée objet. mysqli se sent comme il est juste une formalité de l'API qui a été objectivé, si vous savez ce que je veux dire. En bref, je trouve que PDO est plus facile de travailler avec, mais c'est bien sûr subjectif.

25voto

Brian Warshaw Points 8806

J'ai commencé à utiliser PDO parce que la déclaration de soutien est mieux, à mon avis. Je suis à l'aide d'un ActiveRecord-esque couche d'accès aux données, et il est beaucoup plus facile à mettre en œuvre généré dynamiquement consolidés. MySQLi du paramètre de liaison doit être fait en une seule fonction/appel de la méthode, donc si vous ne savez pas jusqu'à l'exécution combien de paramètres que vous souhaitez lier, vous êtes obligés d'utiliser call_user_func_array() (je crois que c'est bien le nom de la fonction) pour les sélections. Et oublier le simple résultat dynamique de la liaison.

La plupart de tous, j'aime AOP parce que c'est un niveau très raisonnable de l'abstraction. Il est facile de l'utiliser dans complètement abstraction de systèmes où vous ne voulez pas écrire de SQL, mais elle rend aussi facile à utiliser d'une façon plus optimisée, pure de requête type de système, ou de mélanger les deux.

17voto

Dave Gregory Points 392

PDO est la norme, c'est ce que la plupart des développeurs s'attendent à utiliser. mysqli était essentiellement une solution sur mesure à un problème particulier, mais il a tous les problèmes des autres bibliothèques spécifiques au SGBD. AOP est où tout le travail acharné et la pensée intelligente ira.

15voto

Tom Points 1705

Voici autre chose à garder à l'esprit: Pour l'instant (PHP 5.2) la librairie PDO est buggé. C'est plein de bugs étranges. Par exemple: avant d'enregistrer une PDOStatement dans une variable, la variable devrait être unset() afin d'éviter une tonne de bugs. La plupart de ces derniers ont été corrigés dans PHP 5.3 et ils seront publiés au début de 2009 en PHP 5.3 qui aura probablement de nombreux autres bugs. Vous devez vous concentrer sur l'utilisation de PDO de PHP 6.1 si vous voulez une version stable et l'utilisation de PDO de PHP 5.3 si vous voulez aider la communauté.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X