PDO Pour se Connecter à MSSQL Sur MSSQL_* Fonctions
Il existe une gamme de mssql_*
Qui ne sont pas dans le processus d'amortissement.
Ils fonctionnent de la même que mysql_*
fonctions; ils ont besoin de moi manuellement échappé, veuillez trouver le lien pour le manuel ci-dessous:
http://uk1.php.net/manual/en/book.mssql.php
MSSQL_* les Fonctions en dehors de php5-mssql
mais ont maintenant été déplacé dans php5-sybase
En outre, en utilisant PDO pour Construire votre Base de données, est disponible, mais est expérimentale
http://php.net/manual/en/ref.pdo-dblib.php
Mais ma question, du fait que les AOP/MySQLI est poussé comme base de données principale solution de communication, dois-je cesser d'utiliser les fonctions mssql_*
Ou est-il possible pour:
AOP Connexion:
$dsn = 'mssql:host=localhost;dbname=testdb';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
Mais si ce processus est toujours répertorié comme expérimental, devrait les développeurs utilisant Microsoft SQL Server
pour leurs bases de données, attendez jusqu'à ce que cette extension est stable pour les Serveurs MYSQL
Donc, à la fin de la journée, Extension PDO ou MSSQL_* Fonctions, même si elles ne sont pas amorties.. Si oui, pourquoi?
OriginalL'auteur user1968541 | 2013-01-13
Vous devez vous connecter pour publier un commentaire.
Ma Propre Opinion
J'ai été en utilisant
PDO
pour se connecter à unMSSQL
base de données pour plus d'un an maintenant et jusqu'à présent je n'ai trouvé absolument aucun problème.En fait, j'ai regardé dans l'aide de la
mssql_*
fonctions avant de migrer versPDO
, et est venu à la conclusion qu'ils sont beaucoup moins fiables, pour ne pas mentionner, l'insécurité, le mode de connexion à unMSSQL
Base de données.Logiquement
À partir d'un point de vue logique,
PDO
est aussi la meilleure option, car elle ne prend que quelques modifications dans le code afin de le modifier à partir deMSSQL
àMySQL
.J'ai écrit une classe wrapper pour la classe PDO qui rend la connexion à ces bases de données très facile.
Considérer cela comme un exemple:
Tout ce qui est unique à
MSSQL
est définie dans cette extension et passe ensuite à la classe parentclass.sql.php
. La beauté de l'AOP, c'est que le code dans le fichierclass.sql.php
n'a pas à être modifié en aucune façon de travailler avec une base de données (ou, toutes les bases de données que j'ai essayé jusqu'à présent).Donc, tout ce qui est nécessaire ici, c'est une petite extension pour chaque type de base de données et il va fonctionner.
Alors que, avec le natif
mssql_*
fonctions, si vous décidez de changer de base de données pour une raison quelconque, vous devez réécrire tout. Pour ne pas mentionner, vous auriez à utiliser PDO pour MySQL de toute façon étant donné que lemysql_*
fonctions sont désormais obsolète.Mes Tests avec PDO
J'ai été en cours d'exécution complexes, des procédures stockées, avec
INPUT PARAMETERS
,OUTPUT PARAMETERS
,INOUT PARAMETERS
, sur des bases de données avec 100 000 000 d'+ enregistrements. Ceux-ci ont travaillé absolument parfaitement, et de continuer à le faire!Références
Une autre raison de ne pas utiliser le
mssql_*
fonctions, c'est qu'ils ne sont plus pris en charge sur Windows avec la version de PHP 5.3 ou version ultérieure:Voir Ici
SyBase Extension relève de la même catégorie que le
mssql_*
fonctions. Ils sont de procédure, pratique et pas portable du tout!Fonctionnalité
Un coup d'œil, j'ai remarqué qu'aucun de ces extensions ont une fonction équivalente à la
mysql_real_escape_string()
fonction. Alors que, dans PDO, il n'est pas nécessaire pour cetteConclusion
Il va sans dire que je suis un moral AOP partisan (et ce seulement après l'avoir utilisé pendant 1 an!). Ce n'est pas à dire que je n'écoute pas les autres peuples avis sur le
mssql_*
fonctions, il sera très difficile de me convaincre, et je pense que la plupart des gens, ces fonctions ne peuvent même rivaliser avec le PDO.Alors, pour conclure, à mon avis, l'AOP est la voie à suivre pour la clé suivante raisons:
mysql_real_escape_string()
mysql_*
fonctions, il s'est avéré pour être le plus rapide dans beaucoup de cas, si pas tous les cas. - Voir IciJ'ai posé une question similaire a tout à l'arrière, et à la même conclusion a été tirée:
Voir ici
Merci beaucoup 🙂
Serait-il possible pour vous d'expliquer votre classe un peu plus?
OriginalL'auteur Ben Carey
Cela pourrait susciter un bon débat. Je suppose que le seul moyen de tester la stabilité de l'AOP fonctions vers des Serveurs Microsoft SQL server, est l'installation de votre propre test local de la zone et poussez la Classe PDO à ses capacités.
Comme vous l'avez dit, php5-sybase contient MSSQL Fonctions et ne sont pas dans l'abandon du processus.
Je suppose que c'est à ce que le développeur se sent à l'aise avec.
Si vous êtes heureux avec MSSQL_* Fonctions, puis aller de l'avant et de les utiliser, mais il pourrait y avoir une possibilité qu'ils vont finir par obsolète depuis PHP tout à fait dans le proche avenir-ce qui se passe avec les Fonctions MySQL.
Bien que, si vous êtes en quête de changement et de nouveaux défis, avec une sécurité supplémentaire contre l'Injection SQL, puis aller de l'avant et essayer de l'AOP compatibilité avec les Serveurs MYSQL.
Il est entièrement à vous.
De ma préférence & et que beaucoup d'autres développeurs de préférence, je dirais allez-AOP fonctions. Je suppose que ça marcherait comme d'habitude.
OriginalL'auteur Daryl Gill
AOP est certainement le chemin à parcourir et pour les utilisateurs de linux j'ai marqué recommande d'aller avec sybase et le connecteur de la dblib DSN.
Pour les utilisateurs d'ubuntu avec PHP7 ce serait:
Et pour la connexion:
Et vous devriez être bon d'aller.
OriginalL'auteur djynnius
AOP est le choix évident avec la sécurité à l'esprit. AOP code est portable, il peut être ajusté pour envoyer des informations à un certain nombre de bases de données sans avoir à modifier les appels de fonction et uniquement la modification de quelques paramètres.
La MSSQL classe n'est pas portable le chemin que PDO est portable.
AOP a un excellent support pour les instructions préparées alors que MSSQL n'en a aucun.
AOP agit comme une couche d'abstraction comme JDBC Java, et est portable.
AOP support pour les transactions, c'est mieux pour les erreurs de manipulation
Espère que la réponse est évidente!
OriginalL'auteur Charles Addis