Hola. Después de tres dias seguidos nada más que buscando y buscando y buscando y buscando y buscando y buscando sin sacar en claro nada, me remito a los cracks de este foro a ver si me podeis echar un cable.
Tengo instalado xampp 1.7.4. Estaba haciendo un ejercicio en PHP que saqué de un libro "profesional PHP 6", de la editorial Wrox y anaya. Es tan sencillo como conectar con mi base de datos usando PDO, pero se me está convirtiendo en un jodido infierno.
Llevo 3 dias atascado porque, sencillamente, no me funciona. En la propia pagina web me salta una PDOException que con el método "$e->getMessage()" me imprime el mensaje "Error: could not find driver".
He mirado si puede ser que me falte alguna librería, pero por lo que he leido solo se necesita el archivo php_pdo_mysql.dll, y ese lo tengo. También lo tengo cargado en el php.ini: extension=php_pdo_mysql.dll
En esta versión de xampp viene el PHP 5.3.5 He leido de gente que le fallaba esto por no tener el archivo php_pdo.dll (a secas, sin el "mysql") pero he leido en la documentación oficial del php que, por encima del php 5.3.0 ya no hace falta ese archivo. (Concretamente lo dice aqui: http://php.net/manual/en/pdo.installation.php) Igualmente he probado a buscar ese archivo e incluirlo en la misma carpeta donde está el php_pdo_mysql.dll y configurar el php.ini para que lo coja, pero al arrancar el apache me dice que el archivo no es compatible con mi versión de php, algo acerca de una clave API obsoleta.
Os pongo un poco de información de mi phpinfo() por si os da alguna otra pista:
Configure Command: cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--disable-isapi" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=D:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8=D:\php-sdk\oracle\instantclient10\sdk,shared" "--with-oci8-11g=D:\php-sdk\oracle\instantclient11\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet" "--with-mcrypt=static"
PDO
PDO support: enabled
PDO drivers: mysql, odbc, sqlite, sqlite2
pdo_mysql
PDO Driver for MySQL: enabled
Client API version: mysqlnd 5.0.7-dev - 091210 - $Revision: 304625 $
PDO_ODBC
PDO Driver for ODBC (Win32): enabled
ODBC Connection Pooling: Enabled, strict matching
pdo_sqlite
PDO Driver for SQLite 3.x: enabled
SQLite Library: 3.7.3
No es problema de usuario y contraseña porque el mismo ejercicio lo tengo hecho conectando de la manera "normal (usando mysql_connect(), mysql_query(), etc y sin problemas).
He probado a conectar como localhost, como 127.0.0.1, como el nombre del host... y nada.
Si a alguien se le ocurre algo, yo ya he hecho todo lo humanamente posible, sencillamente estoy al límite de buscar y romperme la cabeza.
Os añado el mensaje que me tira la función "$e->getTraceAsString()" de la PDOException, por si da alguna otra pista: #0 C:\xampp\htdocs\PDO_proyecto01\index.php(80): PDO->__construct(' mysql:host=Loc...') #1 {main}
Gracias.
< - >Aqui os pongo el código donde realizo la conexión:
$strDSN = " mysql:host=Localhost;dbname=galeria;user=root;pass word=curs ";
try {
$objPDO = new PDO($strDSN);
$objPDO->setAttrbute(PDO::ATTR_MODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
echo "Error: ".$e->getMessage()." ".$e->getTraceAsString()."\n";
}
Marcadores