query new conexion php mysql pdo

new - PHP PDO vs mysql_connect normal



php mysql connect (12)

Algunas ventajas de PDO:

  1. Puede acceder a múltiples bases de datos.
  2. Proporcionó muchos controladores de base de datos para conectarse con diferentes bases de datos diferentes.
  3. Cuando cambia de una base de datos a otra, no necesita escribir todo el código para conectarse con la nueva base de datos, simplemente cambie la cadena de conexión y algunas consultas que son necesarias para la nueva base de datos.
  4. Proporciona una declaración de preparación que es un tipo de plantilla de consulta que se compila solo una vez y se puede ejecutar tantas veces como se desee, simplemente cambiando los atributos que se denominan place-holder.
  5. Operación general fácil y eficiente como- Insertar, actualizar ... etc.

¿Debo usar php PDO o mysql_connect normal para ejecutar consultas de bases de datos en PHP?

¿Cuál es más rápido?

Uno de los grandes beneficios de PDO es que la interfaz es consistente en múltiples bases de datos. También hay algunas funciones geniales para las declaraciones preparadas, que eliminan parte de la dificultad de todas las cadenas de consulta. La portabilidad de PDO es mayor que mysql_connect.

Entonces, ¿debería usar PDO por esas razones o apegarme a la tradicional mysql_connect?


Algunos tiempos rápidos indican que PDO es ligeramente más rápido en la conexión.

$start = microtime(true); for($i=0; $i<10000; ++$i) { try { $db = new PDO($dsn, $user, $password); } catch (PDOException $e) { echo ''Connection failed: '' . $e->getMessage()."/n"; } $db = null; } $pdotime = microtime(true) - $start; echo "PDO time: ".$pdotime."/n"; $start = microtime(true); for($i=0; $i<10000; ++$i) { $db = mysql_connect($host, $user, $password); if(!$db) { echo "Connection failed/n"; } if(!mysql_select_db($schema, $db)) { echo "Error: ".mysql_error()."/n"; } mysql_close($db); } $rawtime = microtime(true) - $start; echo "Raw time: ".$rawtime."/n";

Da resultados como

PDO time: 0.77983117103577 Raw time: 0.8918719291687 PDO time: 0.7866849899292 Raw time: 0.8954758644104 PDO time: 0.77420806884766 Raw time: 0.90708494186401 PDO time: 0.77484893798828 Raw time: 0.90069103240967

La diferencia de velocidad será insignificante de todos modos; establecer una conexión de red probablemente demorará MUCHO más que cualquier sobrecarga incurrida por PDO, especialmente si el servidor mysql está en otro host.

Usted mencionó todas las razones para usar PDO usted mismo. Realmente, nunca use las funciones mysql_ * directamente, use PDO o use some some library .


En ambos casos, llama al mismo servidor mySQL del mismo servidor Php ... por lo que no puede notar mucha diferencia.

Si desea un buen rendimiento, piense en el caché (Memcache o archivo PHP simple ...) y cree una buena estructura de base de datos (ÍNDICE ...)


En general, recomendaría usar PDO a menos que haya una razón específica que no pueda. Si no hay una pequeña diferencia entre los dos y no tiene ninguna razón para no usar PDO, creo que sería mejor entrar en la práctica de usar abstracción de base de datos en sus aplicaciones que ir con mysql_ * simplemente porque está allí. Yo diría que mejor gane la práctica.



No creo que la velocidad sea lo que las personas buscan cuando usan PDO; no sé si hay alguna diferencia, y sinceramente no me importa: siempre y cuando haga algunas consultas a una base de datos al generar una página, un par de milisegundos en el lado de PHP no cambiará nada.

Hay dos / tres cosas buenas con PDO, en comparación con mysql_* :

  • Interfaz más o menos constante a través de las bases de datos; mejor que usar mysql_* , pg_* , oci_* , ...
  • API orientada a objetos ( mysqli_* tiene una OO-API, pero no mysql_* )
  • Admite nuevas características de MySQL> = 4.1 (igual que mysqli_* , pero no mysql_* , de nuevo)

Por cierto: generalmente estoy usando PDO, ya sea "a mano", o como está integrado / usado por Zend Framework y / o Doctrine .


Como nota al margen: incluso si no va a utilizar PDO, tenga en cuenta que se recomienda el uso de mysqli en lugar de mysql.

Vea esta página del manual de PHP , sobre eso.


PDO es un poco más lento que el mysql_ * pero tiene una gran portabilidad. PDO proporciona una única interfaz en múltiples bases de datos. Eso significa que puede usar múltiples DB sin usar mysql_query para mysql, mssql_query para MS sql, etc. Solo use algo como $ db-> query ("INSERT INTO ...") siempre. No importa qué controlador de base de datos esté utilizando.

Por lo tanto, para un proyecto más grande o portátil, PDO es preferible. Incluso Zend Framework usa PDO.


Realicé algunas pruebas de rendimiento para comparar las funciones de Mysqli con las funciones de PDO utilizando tanto declaraciones preparadas como consultas directas regulares (probadas mediante el uso de sentencias select en las tablas Mysqlnd y MyISAM).

Descubrí que las consultas PDO son solo un poco más lentas que Mysqli, pero solo ligeramente. Esto tiene sentido, ya que PDO utiliza para este fin principalmente un envoltorio que llama a las funciones de Mysqli. La ventaja de utilizar PDO es que hace que sea un poco más fácil migrar a una base de datos diferente porque los nombres de las funciones no son específicos de MySQL.

La diferencia de rendimiento real reside en si usa consultas preparadas. El uso de consultas preparadas supone una penalización importante y significativa en el rendimiento. Otras personas que los han probado han encontrado los mismos resultados.

Las únicas consultas preparadas para el tiempo son más rápidas si está preparando una consulta una vez y luego enviándola miles de veces con diferentes valores de datos. De lo contrario, siempre es más rápido usar mysqli :: query () o PDO :: query (). Pero es importante tener en cuenta que esas funciones no escapan a los valores de datos para usted, por lo que debe recordar utilizar mysqli :: real_ escape_cadena () o PDO :: quote () en variables de datos.


Si el rendimiento no es un "problema real" para usted, debe usar PDO. El rendimiento difiere por pequeños márgenes, y PDO tiene una interfaz de base de datos cruzada muy agradable y portátil que puede ahorrarle algunos dolores de cabeza en caso de que necesite utilizar varios controladores de base de datos.


Código de conexión a la base de datos PDO:

<?php $dbhost = ''localhost''; $dbname = ''clsrepair''; $dbuser = ''root''; $dbpass = ''''; try { $db = new PDO("mysql:host={$dbhost};dbname={$dbname}",$dbuser,$dbpass); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo "Connection error: ".$e->getMessage(); } ?>

Código de conexión a la base de datos MySQL normal:

<?php mysql_connect("localhost","root", ""); mysql_select_db ("clsrepair"); ?>

o

<?php $dbHost = ''localhost''; // usually localhost $dbUsername = ''root''; $dbPassword = ''''; $dbDatabase = ''clsrepair''; $db = mysql_connect($dbHost, $dbUsername, $dbPassword) or die ("Unable to connect to Database Server."); mysql_select_db ($dbDatabase, $db) or die ("Could not select database."); ?>

El código de conexión de la base de datos MySQL es fácil pero la PDO tiene muchas ventajas.


  • Con PDO puede utilizar parámetros enlazados y eso evitará la mayoría de los ataques de inyección sql.
  • Puede ganar más velocidad usando declaraciones preparadas por PDO.
  • interfaz estándar para todos los back-end db
  • Hay un montón de métodos útiles (como la familia fetch *)

  • PDO es mejor que SQl
  • PDO y su declaración de preparación proporcionan el mejor código seguro contra la inyección de SQL
  • PDO está orientado a objetos;)
  • PDO es compatible con algunas bases de datos Engine Tal como se explicó antes
  • MySQLl_ * está en desuso y se eliminará pronto
  • PDO proporciona más funcionalidad con menos líneas de códigos Ejemplo:

    Pdo

    1. Conectar
    2. Compruebe "<" y ">" y "#" (este control para usos globales)
    3. Preparar
    4. Ejecutar
    5. Cerca

MySQL_ *

  1. Conectar
  2. Añadir barra invertida
  3. Xsafe
  4. Compruebe "<" y ">" y "#" (este control para usos globales)
  5. Consulta
  6. Cerca

tanto la misma funcionalidad pero se compara para códigos PDO es más humanamente legible :) Entonces, ¿qué piensas?