que pena que no puedo dejar 100 likes. Muy claro, muy conciso, muy util. Video del 2015 y lo estoy viendo 6 años despues y sigue aportando conocimiento y valor. Felicidades
Mirá , yo he llevado con vos varios cursos y todos son increíblemente detallados. Vos sos superdotado,la verdad. Claro, eso no quita que también se nota que eres supertrabajador al proporcionar cursos tan buenos y extensos. Muchísimas gracias.
Estoy estudiando en una facultad con un profesor que lo unico que hace es dar "apuntes" que hace en la misma clase y estudiamos de ahi, nunca entendi nada, un video tuyo de PDO y ya me quedo claro el asunto, lo mismo con el resto del curso. Muchas gracias
Excelente cada uno de sus cursos, es un enorme y valioso aporte a la comunidad el que usted ha hecho, su forma de explicar vale millones. Hay un tema que me ha costado entender, los servicios REST y creación de APIs, desconozco si está en sus planes pero no dudo que ayudaría a muchos como yo. ¡Gracias por sus videos!
Me sirvió genial, muchas gracias, aunque yo recomendaría para aumentar un poco la seguridad hacer la conexión en una file PHP en una carpeta contenedora, esto aumenta un poco la seguridad de la pagina. Muchas Gracias!!
¡Saludos! Ejecutando mi código he notado que si entra al catch no ejecuta el finally, pero si entra al try sí lo ejecuta. ¡¡Juan, eres el mejor de los que he visto... Y he visto muchos!!
excelente explicación, sin duda el mejor que he visto en youtube, Me gustaría que nos enseñaras la conexión a base de datos usando el patrón singleton. un Saludo
Muchas gracias No Te imaginas Todo lo Que he Aprendido viendo Tus Videos, Ya hasta el acento se me esta Pegando Y la VOs de Mi Sub conciente suena cada ves mas como la tuya, mientras Veo Tus Videos XD. Saludos Desde Rep. Dom. !
Le felicito por sus videos a toda la comunidad y le agradezco sus intenciones. Me gustaría que enseñara algo sobre la conexion a una BBDD a través de html requiriendo un usuario, contraseña y email, el usuario puede ser administrativo con privilegios y normal ...y como implantar md5, sha1 o algun sistema de seguridad a dicha entrada con contraseña. Mis saludos
Llevo casi todo el día peleándome porque no me conectaba PDO con la base de datos, cuando me fijo y veo que he puesto "mysqli:host..." en vez de "mysql:host...". ¡Una "i"! ¡una puñetera y mísera "i"! Pensando que era un problema con el driver...¡Hasta cambié de Wamp a XAMPP! Puta programación :')
Gracias por el curso, muy bien explicado, les comento que finally me presentaba un error de sintaxis y a la vez no funcionaba en el navegador, para solucionar este problema deben agregar 2 puntos adelante de finally. Saludos.
No me conectaba a la BBDD (SQLSTATE[HY000] [1049] Unknown database), me decía que no la encontraba y es que me faltaba el puerto... $base = new PDO ('mysql:host=localhost; port=3308; dbname=curso_php', 'root', '',);
gracias por sus cursos, espero toque el tema de login y registro de usuarios, pero algo completo, como con perfil, recupero de contraceña, cambio de contraceña. y esas funciones basicas... :D tambien seria bueno, como subir por ejemplo una imagen o un Rar a la base de datos y como descargarlo con alguna url, ojala me entienda y en el transcurso de sus videos adopte estos temas, y pues me parecio bueno el POO , mas que el PDO
Hola, Deberías indicar en algún lado que la sentencia finally solo funciona en PHP 5.5 o superior, ya que estaba trabajando en 5.4.3 y me he encontrado con ese problema. Buen vídeo, muy bien explicado todo. Saludos.
Buenos días Juan Siguiendo con el curso de PHP, que tenía abandonado desde este verano, lo he retomado porque estoy haciendo un ciclo de DAW por e-learning, y me están viniendo muy bien tus tutoriales. El caso es que, en este primer ejemplo de PDO, me estoy volviendo loca, porque me he equivocado en la cadena de conexión, y sin embargo, no salta excepción alguna. Incluso he cambiado la claSe Exception por la PDOException, que es más específica, para ver si saltaba la excepción, y solo salta cuando te equivocas en el nombre del servidor, pero si pones por ejemplo dbNAMEEE en lugar de dbname, no salta nada y sigue dentro del try, como si tal cosa. La excepción solamente salta si pones mal o bien el nombre del servidor o bien el nombre del driver, pero en el resto de los casos no salta, ya pongas una Exception genérica o la específica PDOException. ¿Hay alguna forma de que la excepción salte SIEMPRE?. El código que he usado es éste: conexion_PDO_I.php Gracias y un saludo
Un detalle gente, creo que en este caso el "finally" solo funciona en caso de que se ejecute el "try", porque en caso de entrar al "catch" se ejecuta la función "die" y se sale del script , por lo cual no se ejecuta el "finally". Saludos
Muy bien visto! Si agregamos esto en el finally } finally { echo "Vaciando la memoria para ahorrar recursos. "; $base = NULL; } comprobamos que en caso de error no se ejecuta el finally. Supongo que en los siguientes tutoriales Juan nos explicará mejor este tema... :)
Hola Señor Juan Gómez, Me encanta tanto tanto tanto tus cursos que no se como agradecertelo, que Dios te bendiga. Quiero estar en contacto contigo aunque a traves de un intermediario, para tener esos cursos aunque no estoy conectado, ya que aquí en mi país (Malabo) el Internet, es todavía un problema, ya me diras porfa. Mis cordiales saludos Eladio Riloha Echube
En el caso de conectar la base de datos, al ejecutar la parte del finally dará un error/warning porque la variable $base no está declarada fuera del try/catch
Hola Fransico tu comentario me genera una dudas. Tenía entendido que las variables sólo eran de ambito local si eran declaradas dentro de una función, no sabía que también tenían ambito local al ser declaradas dentro de un try.
Hola a tod@s Comento esto porque me ha pasado y quizas a alguno le pueda ocurrir. Al instanciar la clase PDO, en los parametros junto al db_name y mysql:... tb se puede especificar el puerto. En mi caso particular es importnte porque tengo dos mysql instalados en mi pc y me estaba dando error de conexion. Al poner el puerto por el que queria entrar todo se ha solucionado. mysql viene por defecto con el puerto 3306, pero yo lo cambié a 3307 porque el primero no me funcionaba al parecer(...). Al haberlo cambiado y querer instanciar PDO se conectaba a travez del puerto 3306, y lo solucione asi: try{ $base=new PDO("mysql:host=127.0.0.1; port=3307; db_name=pruebas; charset='utf8'", "root", ""); .........................
Bueno yo no queria pdo y de aqui para adelante todo es pdo :( bueno me complica bastante con la forma en la que me enseñaron a darle con fe no me quedare en medio del curso yo vine por el mvc sesiones cookies pero buena ya esta ya llegue hasta aqui.a darle nomas
Hace tiempo que grabé este vídeo y ya no recuerdo el código del mismo. pero si el die se lee antes que el finally, efectivamente se sale del código. Tendría que revisar el código para comprobar que es coherente pero tengo poco tiempo. Un saludo!!
Hola, gracias por los cursos, tengo una pregunta, me marca el siguiente error SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) y no encuentro una solución para resolverlo, me podrías ayudar gracias.
5 лет назад+3
Php no tiene un recolector de basura como Java? toca hacer null las variables uno mismo?
Hola Juan estoy haciendo el curso ahora y no se si es que está desfazado o es que yo estoy haciendo algo mal, pero lo cierto es que no me conecta y me sale un problema :"Error : could not find "driver" y he buscado por internet y pone que active varias extensiones en php.ini, que ya he hecho. He conseguido hacer una conexion PDO pero mediante una clase donde se especifica el driver y otro tipo de parámetros... y entonces si. Pero claro no es la forma en la que tu estás explicando en el curso y me gustaría saber si es que ya este sistema esta obsoleto. Muchas gracias Juan, me has ayudado mucho con tus cursos.
Antes que nada te agradezco por esta gran serie de tutoriales que son realmente buenos. Tengo una duda: Yo estoy creando un WebService en PHP para conectar mi aplicacion Android a mi base de datos MySql. La aplicación enviará cada 2 minutos datos de la ubicacíon del dispositivo por lo que el WebService actualizará esos datos en la base de datos. Como android llamará al PHP cada dos minutos solicitando la actualizacion en la base de datos, creará una conexión nueva cada vez? Supongo que esto seria muy ineficiente si fuera asi. Como podría hacer para que una vez que se abra la conexión a la base de datos en PHP se utilize esa conexión siempre y no que habra una conexión nueva cada dos minutos. Muchas gracias de antemano. Saludos
+cone Ojala Falten varios... jeje... La verdad, explica tan bien que no me gustaria que terminaran.... Felicito esta gran e importante tarea que hace a diario.... Una Maravilla realmente... Y ademas justo estoy haciendo un proyecto con este tema asi que mejor imposible..... Vamos Todavia!
Una consulta, he intentado hacer la conexión con otro usuario que he creado con todos los permisos y aún así mandar error, ¿acaso esto sólo funciona con el usuario root? en mi caso así es, pero quiero saber si es así en concreto
hola tengo una consulta, esto consumiría mas recursos o menos, maestro ? $base=new PDO ("mysql:host=".$db_host."; dbname=".$db_nombre,$db_usuario,$db_contra);
Buenos dias Profesor . Tengo un problema me pudiera ayudar . A la hora de compilar el codigo me sale Error: could not find driver.. se lo agradeceria . Excelentes sus videos .
Hola alguien que me ayude tengo este error Error: SQLSTATE[HY000] [1049] Unknown database 'pruebas' y no he podido resolverlo mi base esta bien todo la version de php que tengo instalada es 5.5
Buen día tengo un duda la conexión me corre bien pero aun cuando le cambio a pruebassss o localhossstttt me sigue saliendo conexion exitosa solo si modifico el usuario y la contraseña me da errror, alguien sabe porque????
Es posible que los parametros de tu constructor no esten bien escritos, me ha pasado que en lugar de escribir "dbname" puse "bdname"... error sencillo pero que produce un comportamiento inesperado.
Lo que si aun no comprendo es porque no reconoce un error del tipo de mala escritura o sintaxis. Lo intenté cambiando host incluso.. por cualquier otra palabra y me sigue dando Conexion OK! Alguien que nos ilumine?
Me ocurría lo mismo y no conseguía ver dónde estaba el error. En mi caso era que en lugar de escribir "mysql:host=localhost" estaba escribiendo "msql:localhost".
Hola !! una pregunta ingenua !! Para conectarse a la base de datos, hace falta declarar las variables (host='localohost' username='root' password='', dbname='prueba') como en el caso de mysqli, o con declarlo en el new PDO es suficiente ?
Estas creando un nuevo objeto de PDO. Yo lo que hago es mas o menos así: $bd = new PDO("mysql:hostname=localhost;dbname=nombre_de_la_bd","root",""); Ya estaria con eso, esos 3 parámetros deben estar si o si. Tambien puedes crear variables con el nombre de $dbname=nombredetuBd, $hostname="localhost", etc. Y las concatenas a la instancia de PDO de arriba
5 лет назад
Al dia de hoy puede que a algunas personas le de error sino se le da un espacio en blanco después de function conctar() { $server = 'mysql: host=localhost; dbname=usuarios'; $user = 'root'; $pass = ''; $base = new PDO($server, $user, $pass); }
Ni siquiera un espacio entre el símbolo "=" te perdona la sintaxis de conexión. Atención, no poner espacios ya que genera conexiones falsas. ejemplo sin espacio correcto: new PDO("mysql:host=localhost; dbname=pruebas", "root", "")
Aquí tuve un susto gordo, y es que la simple conexión no funcionaba de ninguna forma, ¿por qué? ¿por qué yo? ¿por qué algo tan simple debe fallarme? ¿tan tonto soy que no puedo ni hacer una simple conexión? Pues no, no era yo xD para quien le aparezca el fallo “could not find driver” la solución es la siguiente: vayan al archivo PHP.ini, busquen estas líneas: ;extension=php_pdo_firebird.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll ;extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll Y eliminen el primer ; Con eso sería todo, yo utilizo EasyPHP que en estos momentos trae PHP 5 y PHP 7, asi que si hacen pruebas con las 2 versiones van a tener que editar los 2 PHP.ini que en estos momentos que escribo este comentario (puede cambiar con alguna actualización) la ruta es C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-binaries\php\, aquí podrán ver las versiones de PHP que tengan instaladas y dentro de cada una, en la misma raíz se encuentra el PHP.ini Saludos!
+Javier Ocampos Pues muchas gracias por tu aporte. Estas son las cosas que nos ayudan a todos. Resolver este tipo de incidencias no es sencillo. Un saludo!!
A mi me dio el error could not find driver debido a que habia dejado espacios en la conexion, es decir, yo habia escrito mysql : host = localhost y la solucion era dejarlo asi: mysql:host=localhost
hola, tengo un problema con el finally, el sublime text me dice que hay un error en el finally y no se como solucionarlo Parse error: syntax error, unexpected
Juan tengo un problemilla y es que tengo el codigo igual: try{ $conexion_bd = new PDO('mysql:host = localhost; dbname = prueba', 'root', ''); echo "Conexión establecida correctamente"; }catch(Exception $e){ die('Error: ' . $e->GetMessage()); } y es que cuando cambio el nombre de la db para probar el catch incluso cambio el nombre del host y me aparece el echo "conexion establecida..." y no entra en el catch, solo entra cuando pongo una contraseña. ¿Tienes alguna idea de que puede ser?. Gracias Juan excelentes tus videos 11/10 :)
Pues la verdad es que ahora no se a qué podría ser debido. Ante cualquier cambio (erróneo) debería de entrar en el catch. Siento no poder ayudarte más ahora mismo. Un saludo
¡Juan! como no podia continuar el curso con este problemilla ¡ya lo solucioné!, buscando en la pagina de php encontré esta manera de conectar, es prácticamente igual pero pues la diferencia que yo le veo en la sintaxis es que en el catch es (PDOException $e) quedando así: $datosDB = 'mysql:dbname=prueba;host=localhost'; $userDB = 'root'; $passDB = ''; try { $base = new PDO($datosDB, $userDB, $passDB); $base -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $base -> exec("SET CHARACTER SET utf8"); echo "Conexión establecida Correctamente"; } catch (PDOException $e) { echo 'Falló la conexión: ' . $e->getMessage(); } ya quedó todo perfecto ahora si a seguir con tus ¡EXCELENTES cursos! :D
ayuda con este error por favor no logro solucionarlo ErrorSQLSTATE[HY000] [2002] No se puede establecer una conexi�n ya que el equipo de destino deneg� expresamente dicha conexi�n.
Hola lo del finally no me funciona me sale error en ,la linea 16 que es donde puse el finally., y estoy utilizando el dreamweare del 2019, y con el finally puesto no me ejecuta ninguna de las dos opciones ni try ni casch, ayuda plis
Creo que pude cerrar sin poner lo de finally despues de cerrar la llave del casch puse $base=null; y no me sale error ni en dreamweare ni en el navegador
amigo instale el appserv 8.1.0 y quite los ; ; ; puntos y comas de los pdo y no me salia, quite el dbname $conexion= new PDO("mysql: host= localhost ; inventarios", 'root', 'bruno'); y me salio bien habra alguna diferencia AMIGASO
+bruno alexis santillan santillan Hola !! Pues no se. Tendría que haber visto la instrucción anterior cuando tenías puesto el dbname para ver si había algo mal.... Un saludo
Le cambio el nombre de dbname por otra que no existe y me sale "Conexión OK" a que se debe esto? deberia de salirme un error, cuando cambio la contraseña si me muestra un error
+miguel estanga La solución la comento más arriba, disculpa pero no vi tu comentario antes de poner el mio, si no te hubiera respondido directamente. Saludos!
Este es el error que me presenta Error: SQLSTATE[HY000] [2002] No se puede establecer una conexi�n ya que el equipo de destino deneg� expresamente dicha conexi�n. y este es el codigo:
¿Estás seguro de que la contraseña para acceder al servidor es la que has puesto en el código? Lo digo porque por defecto si nadie la cambió la contraseña suele ser en blanco. Un saludo!!
si yo la cambie profesor y ya lo solucione. lo que paso es que la pc la apagaron mientras estaba mi usuario en uso y al iniciar todo nuevamente o sea iniciar el wamp todo va bien, pero no en el código que tengo en dreamweaver lo que hice fue dar clic izquierdo el el icono de wamp y reiniciar varias veces los servicios creo fueron unas 4 veces. gracias por sus clases se le agradece mucho por compartir sus conocimientos con una metodología muy buena. bendiciones.
Hola profe tengo una consulta, Quise hacer la conexion mediante un archivo host.php que contiene: define("HOST","mysql:host=localhost ; dbname = pruebaPDO"); define ("USER", "root"); define("PASS","password"); en conexion.php hice require("host.php"); try { $conexion = new PDO(HOST,USER,PASS); echo "ok"; } catch (Exception $e){ die("Error: ".$e->getMessage()." Code: ".$e->getCode()); } Pero me da el error: Error: could not find driver Code: 0 Que estoy haciendo mal que no puedo definir los datos del host con constantes con PDO :S Por las dudas PHPinfo(): PDO support enabled PDO drivers mysql, sqlite ya no se que mas hacer jaja NO ME DEN BOLA, YA LO SOLUCIONE. reinicie por completo apache, no solo de stop service, si no cerre la app la volvi a abrir y conecto de 10. con la constante: define("HOSTDB","mysql:host=localhost;dbname=pruebapdo"); Gracias.
En este vídeo antes de copiar la instrucción de Finally pasa lo siguiente: - Cuando escribo la palabra pruebas y luego F12 sale el siguiente error: Conexión OK y queda igual como la del vídeo ignorando el Catch - Cuando escribo la palabra pruebasss y luego F12 sale el siguiente error: Error: SQLSTATE[42000] [1049] Unknown database 'pruebassss' Este error es diferente al que que muestra el video del profe: Error: SQLSTATE[HY000] [1049] BASE 'pruebassss' inconnue Que causo la diferencia de error en el anterior paso? Cuando se adiciona la instrucción de finally{ $base=null; } mas F12 sale el siguiente error y es el mismos cuando se escribe la plabra pruebas o pruebassss: ( ! ) Parse error: syntax error, unexpected '{' in C:\wamp\www\CURSO PHP\conpdo.php on line 22 La versión de PHP que me aparece en el Wanp que se instalo es 5.3.10, este error tiene que ver con la version? por favor solicito una pista corregir este error saludos
Hola !! Los errores de Unknown databse y el de BASE inconnue son lo mismo: la BBDD no existe. En cuanto al otro error que comentas parece ser que se trata de un error de sintaxis. Te diría que revisaras bien el tema de las llaves, los puntos y comas etc.... Sin ver el código es todo lo que te puedo ayudar desde aquí. Un saludo!!
Gracias profesor, le agregue : a la instrucción finally y se le quito el error, e inclusive tambien se le quito el error que mostraba el programa de Dreamweaver finally:{ $base=null; } saludos
Si una clase A hereda de una clase B, usando :: se puede acceder a un método de la clase padre desde una instancia de la clase hija, es decir: instancia_A::metodo_de_B();
Dependiendo del tipo de aplicación que vayas a crear, te resultará más sencillo utilizar una u otra. por ejemplo, si vas a realizar una sencilla aplicación de prueba para ver si se puede conectar con una BBDD, seguramente no te interese hacerlo utilizando POO ni PDO. Sin embargo en una aplicación compleja con muchos módulos de código que seguramente en el futuro se reutilizarán para otras aplicaciones, lo más adecuado será conectar con la BBDD utilizando POO. En programación (da igual el lenguaje) casi siempre hay varias formas de hacer una misma cosa. Y está bien que sea así porque te permite elegir la más cómoda en cada situación. Un saludo!
me sale un error, me podrian ayudar: Conexion fallida: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Host desconocido. y tengo todo bien. pero me sale este error
que pena que no puedo dejar 100 likes. Muy claro, muy conciso, muy util. Video del 2015 y lo estoy viendo 6 años despues y sigue aportando conocimiento y valor. Felicidades
usted es el puto amo, hablo español e ingles, y no he encontrado nada que supere este curso!
Muchas gracias por el comentario. Me alegro de que te gusten los vídeos. ¡Un saludo!
Mirá , yo he llevado con vos varios cursos y todos son increíblemente detallados. Vos sos superdotado,la verdad. Claro, eso no quita que también se nota que eres supertrabajador al proporcionar cursos tan buenos y extensos. Muchísimas gracias.
Gracias Maestro Juan, no imaginas lo que has hecho por mi. Juro que te retribuiré cada segundo. Dios te bendiga
Gracias por seguir mis vídeos. Me alegro de que te gusten. Un saludo!
Aprovechando la pandemia para Aprender Bien php estoy tan agradecido que me estoy viendo los comerciales completos :D.
jajajaja ........
X2 es una manera de retribuir
Al Nivel de JulioProfe sin duda don Pildoras , espero poder verlo en el rewind de este año .
Saludos cordiales como siempre.
Estoy estudiando en una facultad con un profesor que lo unico que hace es dar "apuntes" que hace en la misma clase y estudiamos de ahi, nunca entendi nada, un video tuyo de PDO y ya me quedo claro el asunto, lo mismo con el resto del curso. Muchas gracias
Excelente cada uno de sus cursos, es un enorme y valioso aporte a la comunidad el que usted ha hecho, su forma de explicar vale millones.
Hay un tema que me ha costado entender, los servicios REST y creación de APIs, desconozco si está en sus planes pero no dudo que ayudaría a muchos como yo.
¡Gracias por sus videos!
Por fin entiendo el tema... Solo necesitaba un buen maestro!!!!
Te felicito pildorasinformaticas, tus cursos son muy avanzados...
Me sirvió genial, muchas gracias, aunque yo recomendaría para aumentar un poco la seguridad hacer la conexión en una file PHP en una carpeta contenedora, esto aumenta un poco la seguridad de la pagina.
Muchas Gracias!!
Muchas gracias profe!!, sus vídeos son magníficos, excelente explicación...
saludos desde Colombia.
+Emel Diaz Gracias por el comentario. Me alegro de que te gusten. Un saludo
Excelente maestro, a pesar de los años, aun nos ayuda mucho sus conocimientos!!
Tengo entendido que "finally" funciona en la versión de PHP 5.5 o superior. Excelente curso y saludos!!
¡Saludos!
Ejecutando mi código he notado que si entra al catch no ejecuta el finally, pero si entra al try sí lo ejecuta.
¡¡Juan, eres el mejor de los que he visto... Y he visto muchos!!
Usted es un gran maestro!! Gracias por explicar tan bien php
Gracias !! Un saludo
Eres el mejor siempre explicas todo muy detallado de nuevo muchas gracias
+Francisco Andres Ortega Flores Muchas gracias por el comentario. Un saludo
Maestro, la claridad con la que explica es genial. Saludos
¡Muchas gracias por estos videos!.
Gracias por el vídeo y por la explicación del try / catch
excelente explicación, sin duda el mejor que he visto en youtube, Me gustaría que nos enseñaras la conexión a base de datos usando el patrón singleton. un Saludo
+Kamal Addi Gracias por tu comentario. Tomo nota de tu petición. Un saludo!!
Muchas gracias No Te imaginas Todo lo Que he Aprendido viendo Tus Videos, Ya hasta el acento se me esta Pegando Y la VOs de Mi Sub conciente suena cada ves mas como la tuya, mientras Veo Tus Videos XD. Saludos Desde Rep. Dom. !
jajajajaja... no se si eso es demasiado bueno. De cualquier forma me alegro de que estés aprendiendo. Un saludo!!
Jejj No se preocupe XD
wilfr307 soy yo msimo
Le felicito por sus videos a toda la comunidad y le agradezco sus intenciones.
Me gustaría que enseñara algo sobre la conexion a una BBDD a través de html requiriendo un usuario, contraseña y email, el usuario puede ser administrativo con privilegios y normal ...y como implantar md5, sha1 o algun sistema de seguridad a dicha entrada con contraseña.
Mis saludos
Eres el mejor explicandooooooooo!! Felicidades hermano.
Qué gran explicación! muchas gracias
Llevo casi todo el día peleándome porque no me conectaba PDO con la base de datos, cuando me fijo y veo que he puesto "mysqli:host..." en vez de "mysql:host...". ¡Una "i"! ¡una puñetera y mísera "i"! Pensando que era un problema con el driver...¡Hasta cambié de Wamp a XAMPP! Puta programación :')
Jajajaja... :(
jajajaja asi es , metele punche
Jajajj buehhhh adelante, eso si... ya no te volverá a pasar :V
Tenlo por seguro jajaja
Y como vas xq numero del curso?
Gracias por el curso, muy bien explicado, les comento que finally me presentaba un error de sintaxis y a la vez no funcionaba en el navegador, para solucionar este problema deben agregar 2 puntos adelante de finally. Saludos.
Me paso lo mismo. Funcionó con :
me gusta el nuevo logo de pildorasinformaticas
Ya empezo lo bueno de PHP
Excelente clase como siempre!!
gracias !!! funciono y muy bien explicado !
Excelente maestro gracias 👍🏻
Gracias profesor!
gracias professor,felicidades
No me conectaba a la BBDD (SQLSTATE[HY000] [1049] Unknown database), me decía que no la encontraba y es que me faltaba el puerto...
$base = new PDO ('mysql:host=localhost; port=3308; dbname=curso_php', 'root', '',);
Gracias, esto pasa cuando cambiamos el puerto, entonces tenemos que agregarlo en la cadena de conexión.
gracias por sus cursos, espero toque el tema de login y registro de usuarios, pero algo completo, como con perfil, recupero de contraceña, cambio de contraceña. y esas funciones basicas... :D tambien seria bueno, como subir por ejemplo una imagen o un Rar a la base de datos y como descargarlo con alguna url, ojala me entienda y en el transcurso de sus videos adopte estos temas, y pues me parecio bueno el POO , mas que el PDO
+Azz Hola !! gracias por el comentario. Todo lo que propones, está en lista de espera para abordarlo en el curso. Un saludo!!
pildorasinformaticas muchas gracias espero eso, eres un gran tutor amigo
Hola, Deberías indicar en algún lado que la sentencia finally solo funciona en PHP 5.5 o superior, ya que estaba trabajando en 5.4.3 y me he encontrado con ese problema.
Buen vídeo, muy bien explicado todo.
Saludos.
Pues tienes razón. A ver si me acuerdo de incluir algún aviso en el vídeo o algo. Un saludo!!
Buen dato. Gracias
eres el mejor..
Buenos días Juan
Siguiendo con el curso de PHP, que tenía abandonado desde este verano, lo he retomado porque estoy haciendo un ciclo de DAW por e-learning, y me están viniendo muy bien tus tutoriales.
El caso es que, en este primer ejemplo de PDO, me estoy volviendo loca, porque me he equivocado en la cadena de conexión, y sin embargo, no salta excepción alguna. Incluso he cambiado la claSe Exception por la PDOException, que es más específica, para ver si saltaba la excepción, y solo salta cuando te equivocas en el nombre del servidor, pero si pones por ejemplo dbNAMEEE en lugar de dbname, no salta nada y sigue dentro del try, como si tal cosa.
La excepción solamente salta si pones mal o bien el nombre del servidor o bien el nombre del driver, pero en el resto de los casos no salta, ya pongas una Exception genérica o la específica PDOException.
¿Hay alguna forma de que la excepción salte SIEMPRE?.
El código que he usado es éste:
conexion_PDO_I.php
Gracias y un saludo
Un detalle gente, creo que en este caso el "finally" solo funciona en caso de que se ejecute el "try", porque en caso de entrar al "catch" se ejecuta la función "die" y se sale del script , por lo cual no se ejecuta el "finally". Saludos
Pues tienes toda la razón. No he caído en el detalle. Gracias por el apunte. Un saludo!!
Gracias a usted Juan, abrazo de gol
Muy bien visto!
Si agregamos esto en el finally
} finally {
echo "Vaciando la memoria para ahorrar recursos. ";
$base = NULL;
}
comprobamos que en caso de error no se ejecuta el finally.
Supongo que en los siguientes tutoriales Juan nos explicará mejor este tema... :)
Hola Señor Juan Gómez,
Me encanta tanto tanto tanto tus cursos que no se como agradecertelo, que Dios te bendiga.
Quiero estar en contacto contigo aunque a traves de un intermediario, para tener esos cursos aunque no estoy conectado, ya que aquí en mi país (Malabo) el Internet, es todavía un problema, ya me diras porfa.
Mis cordiales saludos
Eladio Riloha Echube
+Eladio Riloha Echube Hola !! Gracias por el comentario. Ponte en contacto conmigo en cursos@pildorasinformaticas.es y hablamos por allí.
Un saludo
Gracias crack me sirvio
Una extensión viene siendo también una clase?? Gracias de antemano y saludos.
En el caso de conectar la base de datos, al ejecutar la parte del finally dará un error/warning porque la variable $base no está declarada fuera del try/catch
Hola Fransico tu comentario me genera una dudas. Tenía entendido que las variables sólo eran de ambito local si eran declaradas dentro de una función, no sabía que también tenían ambito local al ser declaradas dentro de un try.
@@sebastianrodelo7965 Lo que se suele hacer es crear la variable $base antes del try-catch. En este caso se le da un valor nulo $base=null
@@FranMay2013 Gracias!
buen trabajo me gusta tus vídeo , pero quisiera que nos enseñaras hacer un chat
Hola a tod@s
Comento esto porque me ha pasado y quizas a alguno le pueda ocurrir.
Al instanciar la clase PDO, en los parametros junto al db_name y mysql:... tb se puede especificar el puerto.
En mi caso particular es importnte porque tengo dos mysql instalados en mi pc y me estaba dando error de conexion. Al poner el puerto por el que queria entrar todo se ha solucionado.
mysql viene por defecto con el puerto 3306, pero yo lo cambié a 3307 porque el primero no me funcionaba al parecer(...). Al haberlo cambiado y querer instanciar PDO se conectaba a travez del puerto 3306, y lo solucione asi:
try{
$base=new PDO("mysql:host=127.0.0.1; port=3307; db_name=pruebas; charset='utf8'", "root", "");
.........................
Excelente aporte. Muchas gracias por ayudar a los demás. Un saludo!!
Bueno yo no queria pdo y de aqui para adelante todo es pdo :( bueno me complica bastante con la forma en la que me enseñaron a darle con fe no me quedare en medio del curso yo vine por el mvc sesiones cookies pero buena ya esta ya llegue hasta aqui.a darle nomas
Buenos dias, cuando usas el die dentro del catch no estas saliendo del codigo php y el finally se deje de ejecutar?
Hace tiempo que grabé este vídeo y ya no recuerdo el código del mismo. pero si el die se lee antes que el finally, efectivamente se sale del código. Tendría que revisar el código para comprobar que es coherente pero tengo poco tiempo. Un saludo!!
Hi.
Entonces deberías colocar el $base=null fuera de todos los bloques? o dentro del catch?
Hola, gracias por los cursos, tengo una pregunta, me marca el siguiente error SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) y no encuentro una solución para resolverlo, me podrías ayudar gracias.
Php no tiene un recolector de basura como Java? toca hacer null las variables uno mismo?
A partir de la versión 5.3 si lo tiene. Antes no. Un saludo!!
Maestro, ¿Quieres decir que si apredon PDO, puedo programar cualquier sitio web con cualquier gestor de base de datos?
Buenas, porque es necesario vaciar la memoria con el finally? eso no lo termine de entender...
Hola Juan estoy haciendo el curso ahora y no se si es que está desfazado o es que yo estoy haciendo algo mal, pero lo cierto es que no me conecta y me sale un problema :"Error : could not find "driver" y he buscado por internet y pone que active varias extensiones en php.ini, que ya he hecho. He conseguido hacer una conexion PDO pero mediante una clase donde se especifica el driver y otro tipo de parámetros... y entonces si. Pero claro no es la forma en la que tu estás explicando en el curso y me gustaría saber si es que ya este sistema esta obsoleto.
Muchas gracias Juan, me has ayudado mucho con tus cursos.
Antes que nada te agradezco por esta gran serie de tutoriales que son realmente buenos. Tengo una duda: Yo estoy creando un WebService en PHP para conectar mi aplicacion Android a mi base de datos MySql. La aplicación enviará cada 2 minutos datos de la ubicacíon del dispositivo por lo que el WebService actualizará esos datos en la base de datos. Como android llamará al PHP cada dos minutos solicitando la actualizacion en la base de datos, creará una conexión nueva cada vez? Supongo que esto seria muy ineficiente si fuera asi. Como podría hacer para que una vez que se abra la conexión a la base de datos en PHP se utilize esa conexión siempre y no que habra una conexión nueva cada dos minutos. Muchas gracias de antemano. Saludos
Tiene que ver con conexiones persistentes?
php.net/manual/es/features.persistent-connections.php
cuantos videos son para el final del curso ?
+cone Ojala Falten varios... jeje... La verdad, explica tan bien que no me gustaria que terminaran.... Felicito esta gran e importante tarea que hace a diario.... Una Maravilla realmente... Y ademas justo estoy haciendo un proyecto con este tema asi que mejor imposible..... Vamos Todavia!
+cone No lo se con exactitud, pero aproximadamente unos 25. Un saludo
Una consulta, he intentado hacer la conexión con otro usuario que he creado con todos los permisos y aún así mandar error, ¿acaso esto sólo funciona con el usuario root? en mi caso así es, pero quiero saber si es así en concreto
hola tengo una consulta, esto consumiría mas recursos o menos, maestro ? $base=new PDO ("mysql:host=".$db_host."; dbname=".$db_nombre,$db_usuario,$db_contra);
Buenos dias Profesor . Tengo un problema me pudiera ayudar . A la hora de compilar el codigo me sale Error: could not find driver.. se lo agradeceria . Excelentes sus videos .
Copia y pega por aquí tu código para ver si hay un posible error. Un saludo!!
Este es mi codigo :
muchas gracias por el apoyo Profesor !!
Tengo la misma base de datos pero con otra tabla que eh creado Gracias!!
thx
Hola alguien que me ayude tengo este error Error: SQLSTATE[HY000] [1049] Unknown database 'pruebas' y no he podido resolverlo mi base esta bien todo la version de php que tengo instalada es 5.5
Buen día tengo un duda la conexión me corre bien pero aun cuando le cambio a pruebassss o localhossstttt me sigue saliendo conexion exitosa solo si modifico el usuario y la contraseña me da errror, alguien sabe porque????
Es posible que los parametros de tu constructor no esten bien escritos, me ha pasado que en lugar de escribir "dbname" puse "bdname"... error sencillo pero que produce un comportamiento inesperado.
Lo que si aun no comprendo es porque no reconoce un error del tipo de mala escritura o sintaxis. Lo intenté cambiando host incluso.. por cualquier otra palabra y me sigue dando Conexion OK!
Alguien que nos ilumine?
A mi me pasaba lo mismo porque puse de esta manera: "myslql:host = localhost; dbname = nombre_base';" con espacios entre la variable y el =
Me ocurría lo mismo y no conseguía ver dónde estaba el error. En mi caso era que en lugar de escribir "mysql:host=localhost" estaba escribiendo "msql:localhost".
Xampp usa?
Alguna sugerencia?
Cuando quiero usar phpMyAdmin me pide usuario y contraseña
Que hago???
usuario root
contraseña en blanco, es decir, no pongas nada. Un saludo!
Hola !! una pregunta ingenua !!
Para conectarse a la base de datos, hace falta declarar las variables (host='localohost' username='root' password='', dbname='prueba') como en el caso de mysqli, o con declarlo en el new PDO es suficiente ?
Estas creando un nuevo objeto de PDO. Yo lo que hago es mas o menos así:
$bd = new PDO("mysql:hostname=localhost;dbname=nombre_de_la_bd","root","");
Ya estaria con eso, esos 3 parámetros deben estar si o si.
Tambien puedes crear variables con el nombre de $dbname=nombredetuBd, $hostname="localhost", etc. Y las concatenas a la instancia de PDO de arriba
Al dia de hoy puede que a algunas personas le de error sino se le da un espacio en blanco después de function conctar() {
$server = 'mysql: host=localhost; dbname=usuarios';
$user = 'root';
$pass = '';
$base = new PDO($server, $user, $pass);
}
Ni siquiera un espacio entre el símbolo "=" te perdona la sintaxis de conexión. Atención, no poner espacios ya que genera conexiones falsas. ejemplo sin espacio correcto: new PDO("mysql:host=localhost; dbname=pruebas", "root", "")
Gracias, me estaba dando error de driver por dejar espacios entre las palabras.
Si, no hay que dejar ningún espacio :o
me sigue haciendo cosas raras el charset... Porque me pone unas Ñ bien y otras mal... Y claro menudo rollo. ¿que cambias?
saludos.
Aquí tuve un susto gordo, y es que la simple conexión no funcionaba de ninguna forma, ¿por qué? ¿por qué yo? ¿por qué algo tan simple debe fallarme? ¿tan tonto soy que no puedo ni hacer una simple conexión? Pues no, no era yo xD para quien le aparezca el fallo “could not find driver” la solución es la siguiente: vayan al archivo PHP.ini, busquen estas líneas:
;extension=php_pdo_firebird.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
Y eliminen el primer ;
Con eso sería todo, yo utilizo EasyPHP que en estos momentos trae PHP 5 y PHP 7, asi que si hacen pruebas con las 2 versiones van a tener que editar los 2 PHP.ini que en estos momentos que escribo este comentario (puede cambiar con alguna actualización) la ruta es C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-binaries\php\, aquí podrán ver las versiones de PHP que tengan instaladas y dentro de cada una, en la misma raíz se encuentra el PHP.ini
Saludos!
+Javier Ocampos Pues muchas gracias por tu aporte. Estas son las cosas que nos ayudan a todos. Resolver este tipo de incidencias no es sencillo. Un saludo!!
A mi me dio el error could not find driver debido a que habia dejado espacios en la conexion, es decir, yo habia escrito mysql : host = localhost y la solucion era dejarlo asi: mysql:host=localhost
hola, tengo un problema con el finally, el sublime text me dice que hay un error en el finally y no se como solucionarlo Parse error: syntax error, unexpected
Juan tengo un problemilla y es que tengo el codigo igual:
try{
$conexion_bd = new PDO('mysql:host = localhost; dbname = prueba', 'root', '');
echo "Conexión establecida correctamente";
}catch(Exception $e){
die('Error: ' . $e->GetMessage());
}
y es que cuando cambio el nombre de la db para probar el catch incluso cambio el nombre del host y me aparece el echo "conexion establecida..." y no entra en el catch, solo entra cuando pongo una contraseña. ¿Tienes alguna idea de que puede ser?. Gracias Juan excelentes tus videos 11/10 :)
Pues la verdad es que ahora no se a qué podría ser debido. Ante cualquier cambio (erróneo) debería de entrar en el catch. Siento no poder ayudarte más ahora mismo. Un saludo
¡Juan! como no podia continuar el curso con este problemilla ¡ya lo solucioné!, buscando en la pagina de php encontré esta manera de conectar, es prácticamente igual pero pues la diferencia que yo le veo en la sintaxis es que en el catch es (PDOException $e) quedando así:
$datosDB = 'mysql:dbname=prueba;host=localhost';
$userDB = 'root';
$passDB = '';
try {
$base = new PDO($datosDB, $userDB, $passDB);
$base -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$base -> exec("SET CHARACTER SET utf8");
echo "Conexión establecida Correctamente";
} catch (PDOException $e) {
echo 'Falló la conexión: ' . $e->getMessage();
}
ya quedó todo perfecto ahora si a seguir con tus ¡EXCELENTES cursos! :D
Seee bien visto. Me alegro de que lo solucionaras. Un saludo!!
ayuda con este error por favor no logro solucionarlo
ErrorSQLSTATE[HY000] [2002] No se puede establecer una conexi�n ya que el equipo de destino deneg� expresamente dicha conexi�n.
$e->getMessage y $e->GetMessage es lo mismo en PHP
Hola lo del finally no me funciona me sale error en ,la linea 16 que es donde puse el finally., y estoy utilizando el dreamweare del 2019, y con el finally puesto no me ejecuta ninguna de las dos opciones ni try ni casch, ayuda plis
Creo que pude cerrar sin poner lo de finally despues de cerrar la llave del casch puse $base=null; y no me sale error ni en dreamweare ni en el navegador
amigo instale el appserv 8.1.0 y quite los ; ; ; puntos y comas de los pdo y no me salia, quite el dbname $conexion= new PDO("mysql: host= localhost ; inventarios", 'root', 'bruno'); y me salio bien habra alguna diferencia AMIGASO
disculpa q sea tan jodido jaaj
+bruno alexis santillan santillan Hola !! Pues no se. Tendría que haber visto la instrucción anterior cuando tenías puesto el dbname para ver si había algo mal.... Un saludo
Le cambio el nombre de dbname por otra que no existe y me sale "Conexión OK" a que se debe esto? deberia de salirme un error, cuando cambio la contraseña si me muestra un error
No sabría decirte.... necesitaría ver todo tu código. Tal vez se quedó cacheada la conexión
No entendí muy bien lo de finally! Saludos profe!
Finally se ejecuta tanto si el flujo de ejecución entra en el try, como si entra en el catch. Un saludo!!
ok pero cual es su función?
me sale este error no se como solucionarlo errorcould not find driver
+miguel estanga La solución la comento más arriba, disculpa pero no vi tu comentario antes de poner el mio, si no te hubiera respondido directamente.
Saludos!
en la instrucción finally me sale este error antes de esta línea todo me funciona bien (Parse error: syntax error, unexpected '{' )
a mi igual
Js
Que programa usais para escribir en el escrito, me ha llamado mucho la curiosidad... Esta de puta madre ese programa, perdona la expresion
Este es el error que me presenta
Error: SQLSTATE[HY000] [2002] No se puede establecer una conexi�n ya que el equipo de destino deneg� expresamente dicha conexi�n.
y este es el codigo:
¿Estás seguro de que la contraseña para acceder al servidor es la que has puesto en el código? Lo digo porque por defecto si nadie la cambió la contraseña suele ser en blanco. Un saludo!!
si yo la cambie profesor y ya lo solucione. lo que paso es que la pc la apagaron mientras estaba mi usuario en uso y al iniciar todo nuevamente o sea iniciar el wamp todo va bien, pero no en el código que tengo en dreamweaver lo que hice fue dar clic izquierdo el el icono de wamp y reiniciar varias veces los servicios creo fueron unas 4 veces. gracias por sus clases se le agradece mucho por compartir sus conocimientos con una metodología muy buena. bendiciones.
amigo como solucionaste este error
Hola profe tengo una consulta, Quise hacer la conexion mediante un archivo host.php que contiene:
define("HOST","mysql:host=localhost ; dbname = pruebaPDO");
define ("USER", "root");
define("PASS","password");
en conexion.php hice require("host.php");
try {
$conexion = new PDO(HOST,USER,PASS);
echo "ok";
} catch (Exception $e){
die("Error: ".$e->getMessage()." Code: ".$e->getCode());
}
Pero me da el error: Error: could not find driver Code: 0
Que estoy haciendo mal que no puedo definir los datos del host con constantes con PDO :S
Por las dudas PHPinfo():
PDO support enabled
PDO drivers mysql, sqlite
ya no se que mas hacer jaja
NO ME DEN BOLA, YA LO SOLUCIONE. reinicie por completo apache, no solo de stop service, si no cerre la app la volvi a abrir y conecto de 10.
con la constante: define("HOSTDB","mysql:host=localhost;dbname=pruebapdo");
Gracias.
Self-service... así me gusta. Un saludo!!
Jajajaja
epico
Pensaba que era una explicacion del PDO, no del try, catch....
me too jaja
Yo me pregunto porque hay tantas formas de hacer lo mismo? Lo mismo de no cosas simples
+Matias Daneri Eso me pregunto yo también.... Pero la programación es así: "siempre hay varios caminos para llegar a Roma". Un saludo
si pues
hola que tal alguien que me pueda ayudar a solucionar este erro
SQLSTATE[HY000] [2002]
saludos
lo pudiste solucionar?
Y nunca utilizó el método "setAttribute" del objeto PDO como lo dijo al principio jejeje.
Buenos días a todos
En este vídeo antes de copiar la instrucción de Finally pasa lo siguiente:
- Cuando escribo la palabra pruebas y luego F12 sale el siguiente error:
Conexión OK y queda igual como la del vídeo ignorando el Catch
- Cuando escribo la palabra pruebasss y luego F12 sale el siguiente error:
Error: SQLSTATE[42000] [1049] Unknown database 'pruebassss'
Este error es diferente al que que muestra el video del profe:
Error: SQLSTATE[HY000] [1049] BASE 'pruebassss' inconnue
Que causo la diferencia de error en el anterior paso?
Cuando se adiciona la instrucción de finally{ $base=null; } mas F12 sale el siguiente error y es el mismos cuando se escribe la plabra pruebas o pruebassss:
( ! ) Parse error: syntax error, unexpected '{' in C:\wamp\www\CURSO PHP\conpdo.php on line 22
La versión de PHP que me aparece en el Wanp que se instalo es 5.3.10, este error tiene que ver con la version? por favor solicito una pista corregir este error
saludos
Hola !! Los errores de Unknown databse y el de BASE inconnue son lo mismo: la BBDD no existe. En cuanto al otro error que comentas parece ser que se trata de un error de sintaxis. Te diría que revisaras bien el tema de las llaves, los puntos y comas etc.... Sin ver el código es todo lo que te puedo ayudar desde aquí. Un saludo!!
Gracias profesor, le agregue : a la instrucción finally y se le quito el error, e inclusive tambien se le quito el error que mostraba el programa de Dreamweaver
finally:{
$base=null;
}
saludos
Gracias, tenia el mismo problema
Cuando yo llegué a la parte donde cambio el nombre de mi base de datos, la cambié y cuando abrí la página me decía: "Conexión Ok" O_o
Esa es mi sentencia, pero me da error tanto en Dreamweaver como en el navegador, nose porque a ver si alguien me lo puede aclarar
creo que es algo tarde, xd pero habías olvidador cerrar la comilla de la contraseña en $base = new PDO.
Gracias
pusiste "excetion" en vez de exception
¿ Que hacen :: ?
No hallo como buscarlo en google 😅😂
Si una clase A hereda de una clase B, usando :: se puede acceder a un método de la clase padre desde una instancia de la clase hija, es decir: instancia_A::metodo_de_B();
para que mierda sirve "momento de mas reproducciones?" que cantidad de recursos tirados al pedo!
No nos explicas cual es el sentido de tener hasta 3 formas de conectar con una base de datos. Parece jaleo innecesario.
Dependiendo del tipo de aplicación que vayas a crear, te resultará más sencillo utilizar una u otra. por ejemplo, si vas a realizar una sencilla aplicación de prueba para ver si se puede conectar con una BBDD, seguramente no te interese hacerlo utilizando POO ni PDO. Sin embargo en una aplicación compleja con muchos módulos de código que seguramente en el futuro se reutilizarán para otras aplicaciones, lo más adecuado será conectar con la BBDD utilizando POO.
En programación (da igual el lenguaje) casi siempre hay varias formas de hacer una misma cosa. Y está bien que sea así porque te permite elegir la más cómoda en cada situación. Un saludo!
me sale un error, me podrian ayudar:
Conexion fallida: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Host desconocido.
y tengo todo bien. pero me sale este error
SEGURAMENTE, NO RECONOCE A LA BASE DE DATOS, VERIFICA TODO