2011-12-29 8 views
14

Cuando empecé a aprender PHP error, me gustaría escribir instrucciones de consulta similar a la de aquí:PHP: versión moderna de "o morir();" para el manejo de

mysql_query("SELECT * FROM `table`") or die(mysql_error()); 

¿Cuál es la mejor, manera de hoy en día, para lograr el mismo efecto que el anterior?

A mi entender, en el mundo de hoy con clases, funciones y OOP general, ejecutar un montón de consultas de esta manera es muy ineficiente. ¿Qué deberíamos estar haciendo de manera diferente?

+0

Uhm, ¿quieres algo diferente de "o morir" o usar OOP por completo? Si el primero, cambia el título! si es el último, puede comenzar desde algo tan "bajo" como mysqli o ir a un ORM completo como Doctrine y Propel pasando por PDO –

+0

Mire en el uso de PDO. Está orientado a objetos y se puede configurar para lanzar excepciones para el manejo de errores (de hecho lo hace de forma predeterminada) excepciones –

+0

....? –

Respuesta

19

Debería usar PDO que arrojará excepciones que se pueden capturar, o si no se capturan, matarán la secuencia de comandos igual que die().

$db = new \PDO(
    'mysql:dbname=database;host=localhost', 
    'root', 
    '', 
    array(
     \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', 
     \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, 
     \PDO::ATTR_ERRMODE   => \PDO::ERRMODE_EXCEPTION 
    ) 
); 

$db->query('SELECT INVALID FOO'); // Exception!!! 

this_never_gets_run(); 
+3

+1 por PDO! PDO es mucho más seguro y más útil de todos modos. – Cyclone

+2

@Cyclone PDO no es intrínsecamente más seguro. Si no está utilizando declaraciones preparadas, no gana nada al cambiar a PDO. No es PDO === seguro. Todavía depende de cómo elaboras tus consultas. – Gordon

+0

@Gordon, aunque puedes dañar tu aplicación con cualquiera de ellos, creo que podrías señalar que hay más formas de lastimarte y que es más fácil lastimarte al no usar PDO. – Xeoncross

Cuestiones relacionadas