2012-01-05 29 views
5

hice mucha investigación en la web, pero no encontré nada que podría ayudarme a utilizar PDO en codeigniter. Vi en el cambio de IC 2.1.0 (creo) que el controlador pdo se agregó a la estructura. terminé ahora con un archivo de configuración database.php que tiene este aspecto:Codeigniter PDO integración

$db['default']['hostname'] = 'mysql:host=myhostname;port=myport'; 
$db['default']['username'] = 'myusername'; 
$db['default']['password'] = 'mypassword'; 
$db['default']['database'] = 'mydb'; 
$db['default']['dbdriver'] = 'pdo'; 

Así que ahora (después de un montón de tiempo perdido para obtener el fragmento anterior al trabajo -.-) que recibo ningún error sobre la conexión , pero ¿CÓMO EJECUTAR LA CONSULTA AHORA? No puedo entender qué sintaxis funcionará y cómo crear consultas. Alguien tiene pistas?

PD: si está wordering acerca de por qué necesito pdo en ci, la respuesta es que mi jefe quiere que se crea un ambiente estructurado con:

  1. CI + 2.x (hecho)
  2. Smarty 3 (hecho)
  3. PHPUnit (todavía no)
  4. DOP (todavía no)

por lo que si usted tiene también algún consejo para integrar PHPUnit se siente libre de responder. Ty por adelantado

Respuesta

7

Utiliza PDO de la misma manera que usa cualquier otro controlador de base de datos en CodeIgniter. Si todavía no está seguro, le recomendaría leer la documentación en el Database Class.

Puede emitir consultas estándar escribiendo explícitamente la consulta o puede usar el Active Record Class (que es más como un generador de consultas).

He aquí algunos ejemplos:

// Standard query 
$results = $this->db->query('SELECT name, title, email FROM my_table'); 

// Active record 
$this->db->select('name, title, email'); 
$results = $this->db->get('my_table'); 

En cuanto a la integración de PHPUnit, echar un vistazo a https://github.com/cmillr/CI-PHPUnit (no he probado yo mismo) o mirar alrededor de la CodeIgniter forums. He visto un montón de temas sobre la integración de PHPUnit con CodeIgniter.

+0

realmente ty por la pista PHPUnit !!!! me has ayudado mucho, he perdido horas buscando smth para phpunit, pero solo encontré viejas bibliotecas de ci, etc ... sobre pdo, no sé por qué, pero en casa funciona bien, pero en las obras más cercanas - > query o AR parece funcionar, debería investigar profundamente. Sin embargo, de nuevo XD – th3n3rd

+1

utilicé xdebug para rastrear lo que hace CI cuando llamo tanto a los registros activos como al método de consulta, y en ambas situaciones CI no usa pdo "prepara" declaración jaja ... cuáles son las ventajas de usar driver pdo si CI no lo hace usa la función pdo adentro !!! Quiero usar pdo en particular porque tiene un método de enlace de consulta (no como codeigniter one). – th3n3rd

+0

Esto es muy viejo, pero asegúrese de preparar la consulta. http://ellislab.com/forums/viewthread/218455/ – RaGe10940

8

necesita cambiar su configuración un poco:

'dsn' => 'mysql:host=localhost;dbname=codeigniter', 
//'hostname' => 'localhost', 
'username' => 'codeigniter', 
'password' => 'codeigniter', 
'database' => 'codeigniter', 

Aviso usamos DSN, no el nombre de host.

Después de eso, sólo tiene que utilizar su $this->db-> como siempre lo haces - el conductor DOP se traducirá todo a métodos PDO

un poco anticuado, pero el tema se carece de explicaciones claras & docs así que escribí este - espero que ayude a aclarar para la gente:

http://codebyjeff.com/blog/2013/03/codeigniter-with-pdo

+1

El enlace solitario se considera una respuesta deficiente (consulte [eliminación de faq #]) ya que no tiene sentido por sí mismo y ** no se garantiza que el recurso de destino esté activo en el futuro. **. [Sería preferible] (http://meta.stackexchange.com/q/8259) incluir aquí las partes esenciales de la respuesta y proporcionar el enlace de referencia. – j0k

+2

notado y actualizado – jmadsen