2017-09-25 11 views
2

Pour une raison quelconque l'extension PHP pdo_mysql sur notre serveur hébergé ne parvient pas à exécuter une requête qui utilise Voir mysql, avec ce message d'erreur:Quelle est la différence entre les extensions nd_pdo_mysql et pdo_mysql?

SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared

dont il est question ici:

https://bugs.mysql.com/bug.php?id=42041

ainsi que de nombreuses entrées de stackoverflow.

Mais pour une raison quelconque, la requête utilisant la vue s'exécute très bien, si nous passons à se connecter en utilisant l'extension nd_pdo_mysql, qui est pour le pilote natif MySQL mysqlnd.

Ma question est la suivante: quelle est la différence entre les deux moteurs et pourquoi choisir l'un plutôt que l'autre?

Merci.

+1

Cela pourrait aider: https://secure.php.net/manual/en/mysqlnd.overview.php –

+0

@HaydenSchiff, merci, mais le lien article semble ne pas se rapporter à des pilotes pdo. Plus d'aide là-bas avec les différences entre les pilotes pdo_mysql et nd_pdo_mysql? – user2340816

+0

Je ne connais pas le terme "nd_pdo_mysql". Les bibliothèques backend sont normalement compilées en PHP, ce n'est pas quelque chose que vous pouvez choisir en runtime. Utilisez-vous une distribution PHP tierce? –

Répondre

0

Pour vous connecter à votre serveur MySQL de PHP, il y a deux versions de pilotes:

  1. mysqlnd
  2. libmysql

Afin de se connecter à votre serveur MySQL à l'aide mysqlnd pilote, vous utilisez l'extension nd_pdo_mysql, comme indiqué dans la capture d'écran ci-dessous.

enter image description here

Depuis libmysql rendements types numériques sous forme de chaînes, j'utilise mysqlnd avec nd_pdo_mysql afin d'obtenir des données natives/strictes, de sorte que les types numériques sont pas des chaînes de caractères.

Depuis le site officiel de MySQL: https://dev.mysql.com/downloads/connector/php-mysqlnd/

The MySQL native driver for PHP mysqlnd is a drop-in replacement for the MySQL Client Library libmysql for the PHP script language.

+0

> Puisque libmysql renvoie des types numériques sous forme de chaînes, j'utilise mysqlnd avec nd_pdo_mysql afin d'obtenir des données natives/strictes, de sorte que les types numériques ne soient pas retournés comme chaînes. ----- Je n'ai pas trouvé cette information ailleurs, et je suis heureux maintenant d'avoir une idée de la raison pour laquelle on choisirait d'utiliser nd_pdo_mysql sur pdo_mysql. Je vous remercie. – user2340816

+0

De quel logiciel est cette capture d'écran? –

+1

Il vient de cPanel – AamirR