Curso PHP MySql. Conexión a BBDD utilizando Clases POO y PDO. Vídeo 58
Вставка
- Опубліковано 19 вер 2024
- En este vídeo vemos cómo utilizar POO y la librería PDO para conectar con BBDD MySql.
Para más cursos, ejercicios y manuales visita: www.pildorasinf...
Dale a like si quieres que los creadores de PHP cambien fetchAll por fecthAll para que a Juan no le den errores :P
jajajajajajajaja..... like
ya me estaba volviendo loco jajajjaja gracias
Gracias Profesor! Mi mamá le mandas saludos, y dice que de tanto yo ver sus videos se acostumbró a su voz en la casa jeje.
hola que tal, no le entendia nada y pare de ver videos y practique como 1 semana y ya puedo hacerlo todo, muchas gracias, recomiendo no solo ver los videos y transcribir el codigo, sino tmb practicar por su cuenta, saludos
dos detalles, primero en el constructor de Conexion no es necesario poner return $this_conexion_db; ya que se esta modificando ese atributo pero no necesitamos rescatarlo, solo se necesita return; para terminar el método, y segundo para cerrar la conexión en el método get_productos hay que hacerlo antes del return; ya que cuando se llega a esa linea se sale de la función y no se ejecutan lineas de código que estén por debajo
El mejor profesor con el que he tenido la suerte de encontrarme.
Para mi un vídeo perfecto por que así es como he aprendido siempre pruebo..error ...pruebo ..error ..hasta que funciona...Gracias por compartir tu forma de entender la programación .
+Zu232Ri1 Gracias por el comentario. Es la mejor forma de aprender sin duda. Fallar, entender en qué has fallado y buscar la solución. Un saludo
Hola Juan y a todos los compañeros, no acostumbro a escribir pero creo que debo dar de lo que he recibido. Primero que todo; muchas gracias Juan por todos los conocimientos compartidos, Dios Te Bendiga.
Bien, para los que han tenido problemas con la connexion (fetchAll(PDO::FETCH_ASSOC);) y (foreach{}) aqui les voy a dejar todo mi codigo para que lo analizen y puedan copiar, probado en todas las versiones de PHP (El "if statement" es solamente si lo quieren usar):
(P.S.> Tambien voy a hacer los mismo en el video anterior para los que tuvimos problemas con lo mismo en mysqli):
____________
___________
Gracias!
genial el curso, luego de acabar este curso, veré nuevamente todo su curso de JAVA, y por ultimo Spring, ojalá lo logre antes de fin de año
Cuando comencé a ver videos de pildoras informaticas pensé ¿es necesario ser tan detallista para explicar un lenguaje de programación? ¿Hasta que punto debemos de ir tan al detalle en el aprendizaje para lograr crear webs funcionales? Hoy despues de haber estudiado libreta en mano el curso de Java, Javascript, Angular, PHP, HTML de este increible canal, puedo decir que es totalmente recomendable seguir al profesor de pildoras informaticas sin prisas, con plena confianza ya que tiene mas que ganada su reputación. Y lo que enseña y se aprende en este canal tarde o temprano te va a permitir solucionar algun problema, que otra persona por ser más impaciente no podrá lograr descifrar.
jaja eres un grande.
Como me he reído con la cadena de errores finales.
Me estoy viendo todo el curso desde 0 sin saltarme ningún vídeo y creo que este es el primer comentario que te hago. Solo decirte que sigas así, estoy aprendiendo mucho contigo.
Te cuento que llevas 18,246 Tomates, con 289 Latas de cerveza lanzados, ah claro y 281.000 tíos que te agradecen el gran esfuerzo que haces en enseñarnos a programar no solo en este lenguaje, si no en los más demandados. Gracias Juan.
:)))) Un saludo!
jajaja no estuvo muy fino como dijo xD grande Juan!!! Excelente profesor de programación !
Excelente clase, Juan! Muchas gracias
Por supuesto que nos quedan ganas de seguir avanzando Juan. Los errores también son parte de la didáctica y en ocasiones despejan más dudas que los aciertos. Excelente!!
la verdad que este curso de php es simplemente maravilloso!! es muy completo y tengo mucha suerte porque ya te no tengo que esperar por mas entregas :v
Me alegro de que te guste el curso. Un saludo!
Profesor, nos quita un peso de encima saber que todos podemos tener errores de sintaxis, no solo nosotros como aprendices, muchas gracias por sus clases y también de alguna manera darnos confianza con sus palabras.
Eres lo maximo, con tus videos estoy aprendiendo a una velocidad barbara, gracias por tu aporte. Soy nuevo en esto y tengo proyectos que voy a poder realizar muy bien, gracias a tus videos. Dios te bendiga, Saludos desde Mollendo Perú
2022 y elegí este curso que es de 2016 porque no solo es practica si no que de manera conceptual uno entiende muchos puntos de como funciona en si la programación te agradezco tu esfuerzo y la gratitud que tienes con tu comunidad. espero futuras entregas de muchos cursos
estoy embarcado en un proyecto (para mi escuela, absolutamente gratis, y de verdad ah!), pero lo detuve, solo para seguir este curso y finalizarlo, voy en el 57, y he podido resolver un monton de errores (ya he hecho lo mismo de manera procedimental y ahora estoy pasando todo a POO, y realmente el diseño queda mucho mejor) ud es el puto amo!
Excelente Juan. Como siempre muy acertada tu explicación y no te preocupes que los fallos nos enseñan mucho más. Un abrazo desde Colombia y mil Gracias por tus enseñanzas.
+Luis Emilio Montoya Muchas gracias por tu comentario y por seguir mis vídeos con tanto interés. Un saludo!!
Llegué a este curso buscando cosas muy concretas de PHP sobre MySql, empezé por el vídeo 1 con intención de ir saltando hasta encontrar lo que me interesaba pero me está gustando tanto, está tan bien explicado que voy por el 58 yno me he saltado ningún vídeo . Tengo intención de seguir hasta el último. Muchas gracias
Los errores enseñan mucho, gracias
Cada vez más complicado jejeje me gusta cómo se está poniendo el curso, hace que repase con detalle el código, que me salgan fallos como los que te salieron (y varios más, esta parte hice 2 veces desde cero para no liarme) y que intente solucionarlos por mi cuenta (antes de preguntar me gusta intentar ver si puedo ver dónde está el fallo sin ayuda de nadie, es el mejor factor indicativo que uno está aprendiendo).
En esta parte el problema me salió por necio y orgulloso, porque lo hice cargándolo todo desde la misma página y poniendo caracteres comodín en la consulta.
Un video de 20 minutos a mí me lleva al menos 6 horas repasarlo con detalle, inclusive consulto manuales y otros videos para entender mejor las cosas porque no quiero quedarme atrás y es que viendo algunos comentarios, se nota que hay muchos compañeros que van varios pasos por delante, talento natural diria yo, algo que yo debo reemplazar por constancia y dedicación…
Saludos!
+Javier Ocampos En la mayoría de los casos no es talento natural, sino la experiencia de llevar muchos años trabajando con PHP. El proceso de aprendizaje que tú sigues es el normal. Pero tienes algo que si les falta a muchos: la constancia y el interés. Un saludo!!
huy si a mi también me salieron errores de sintaxis y me toco volver a ver el video.
Con el tiempo te acostumbras, yo aún sigo siendo novato, aunque se puede decir que oficialmente ya trabajo como programador PHP pues desde aquel mensaje han pasado 4 meses en los que gracias a este canal entre otros he aprendido bastante, he llegado a cierto punto donde cuando tengo una duda, en primer lugar, pienso como podría hacerlo, y si no encuentro solución, busco en Google, en cambio cuando empiezas, primero buscas y luego piensas, lo que no puede faltar nunca es el fallo, fallar, fallar y fallar es lo que te convierte en un verdadero programador.
Otro consejo que podría darte si recién empiezas es que no pretendas recordar la sintaxis de memoria, no la vas a recordar y es normal, es suficiente con que la entiendas y ya con la practica poco a poco vas memorizando las cosas de hacerlas infinidad de ocasiones, y si no te acuerdas de algo, buscas y listo, entendiendo las cosas en menos de 5 minutos encuentras lo que buscas.
Saludos!!
Gracias amigo por tu consejo,de verdad se me es de mucho animo para seguir aprendiendo cada vez mas y gracias al profe Juan he aprendido mucho ,seguiré día a día dándole con duro al estudio . Saludos..un Feliz día.
Gracias por el curso, usted es el mejor profesor que eh tenido.
Con tus videos siempre hay ganas, muchas gracias como siempre y un saludo.
+Kaneda Kazama Gracias !! Un saludo
Hola Juan pues te lanzare un tomate desde Colombia, aunque no creo que llegue, es molestando gracias por el curso son de bastante utilidad y aprendizaje, Saludos
:))) Gracias por el comentario y por seguir el curso. Un saludo!!
Creo que es la primera vez que escucho al profesor Juan reírse jajaaj es bueno reírse en vez de frustarse por estos errores tan comunes
Muchas gracias por tu tiempo y dedicación. Reflexión: El curso está genial si bien observo en los últimos vídeos esa posibilidad de conectar de diferentes formas y que pueden despistar a mas de uno sobre todo porque no se tienen asimilado completamente los conocimientos anteriores y se puede llegar a colapsar. En la práctica y si eres nuevo al final usarás aquella manera con la que te sientas más cómod@ independientemente si la forma es mas actual. Muchas Gracias nuevamente!!!
Esto me funcione de maravilla como desde el uno menos 57 hay que actualizar contenido del video gracias profe por todo
Hey Juan, gracias por todo, saludos. Seguimos hasta el final y después con los otros cursos.
Ánimo !! Gracias por seguir mis vídeos. Un saludo
Excelente curso, todo se entiende y todo esta muy bien explicado, eres un excelente pedagogo. Mil gracias saludos.
Muchas gracias de nuevo Juan, me estás ayudando mucho. Un saludo.
+Javier Bjz2607 Gracias a ti por seguir mis vídeos. Me alegro de que los vídeos sean de utilidad. Un saludo!!
Tranquilo Juan, esos errores son lo de menos. Gracias por el video. Un saludo
excelente explicacion maestro, he aprendido mucho con tus videos
+felipe castillo Gracias !! Un cordial saludo
Como siempre muchas gracias Don Pildoras. Los errores esta vez los habia visto pero pense que quizás el del error era yo y no ud incluso XD.
Es gran Señor , saludos.
este si estuvo bueno desde pues de un año pero e aprendido mucho
En la clase DevuelveProductos creo que se olvido de preparar la consulta contra sql injection con el execute(array($dato)). Saludos!
Gran vídeo , gracias por compartir.
EXCELENTE COMO SIEMPRE PROFE!!!!!!!
Muy bueno tus videos, queria pedirte si puedes hacer un video de insertar, modificar y eliminar archivos como imagenes, pdf, etc. guardandolos en un directorio y tambien con la posibilidad de crear dichos directorios, todo con pdo y poo. Muchas gracias
Tomo nota de tu petición. Espero poderlo hacer. Un saludo
yo llevo desde el anterior video que en la parte del parent::__construct el editor de visual studio code me dice que es un metodo indefinido y nada mas lo demas esta bien
Una apreciación. En el lugar que declaras el vaciado de memoria, jamás ocurrirá por efecto de nuestro código. Lo acertado, en ese diseño, sería hacerlo en un bloque finally.
Ya no recuerdo qué hice en este vídeo pero efectivamente el cierre de conexiones, recordset y en general todo lo que tenga que ver con un vaciado de memoria, es recomendable incluirlo en un finally para que se ejecute siempre. Buena apreciación. Un saludo!
oye Juan tu serìas perfecto para dar un tutorial de CodeIgniter3, estoy empezando a estudiarlo pero no he podido ver la luz, con esta teorìa que enseñas en este canal me ha servido para guiarme un poco, pero como te dije, serìa genial si nos haces una pequeña introducciòn sobre este framework. saludos
+Yack Hanncko Hola !! Tomo nota, aunque me pedís muchos framworks diferentes todos los días. A ver si puedo hacer un curso con algunos de ellos. Un saludo
Buen día excelente tutorial, aunque en este caso me da error es en la línea construct. Saludos Prof. Juan excelente enseñanza la que usted imparte que sigan los éxitos
Gracias por el comentario. Si no das con el error, copia y pega por aquí todo tu código a ver si podemos ayudar. Un saludo!!
pildorasinformaticas Gracias por la respueste aqui le anexo el código de
Buenas, a mi me paso lo mismo, y veo que tienes el metodo construct sin los 2 guiones bajos solo has puesto uno. __construct();
Gracias amigo David, aunque ahora me da este error después de colocar los dos guiones Warning: PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Host desconocido. in C:\wamp\www\POO\conexion.php on line 12 y este es el código de conexión
saludos amigo y gracias por la ayuda éxitos
Haber, soy novato como tu, lo otro si sabia que estaba mal , porque a mi tambien me paso, esto no lo se, pero por lo que dice el fallo , parece como si la linea 12 del fichero conenion.php tubiera algun problema. Me sabe mal no poder ser de ayuda ;) , prueva de ponerlo a mano sin pillar la info de variables xd.
es normal profesor, todos tenemos algunas palabras que aunque sepamos como se escriben a la hora de teclearlo siempre pasa que es como que el cerebro y los dedos lo escriben de la manera que creen más fácil y se nos adelantan algunas letras
profe, en el 12:37 porque retorna $conexion_db (si no la utilizara) y en POO no hizo lo mismo?
Eliminé esa linea de codigo e igual sigue funcionando
Gracias por todooo
Cierto, no debe de llevar un return el constructor devolverá a través del new
Por fin te escuche reír Profe 😅🤣🤣
Hola Juan, me gustaría saber cual es la mejor manera de programar, me empiezo a enredar con las formas de la conexión a la BBDD y se me ha hecho mas cómodo por PDO, hay algún problema, o es menos seguro si lo hago por métodos procedimentales??. Saludos desde México.
No hay problema ninguno. Tanto la programación php procedimental utilizando mysqli, como utilizando PDO son válidas. Lo que ocurre es que los lenguajes de programación van evolucionando como todo, y se considera una práctica de programación más moderna el utilizar la POO (Programación Orientada a Objetos) que la forma procedimental. La POO simplifica el código de programación, lo hace más fácil de mantener y actualizar, y es el estilo de programación recomendado hoy en día para todos los lenguajes de programación modernos. Un saludo!!
Para no liarse con la concatenacion, seria mejor simplemente
$resultado=$this->conexion_db->query("SELECT * FROM PRODUCTOS WHERE PAIS='$dato'");
Me funciono.
como dice juan cada quien utiliza los recursos de programacion que quiere, pero de verdad que hay algunos modos de consultar dentro de mysql que de verdad son muy engorrosos y muy largos y por supuesto estan algunos que son mas practicos con la libreria PDO, pero como digo cada quien utiliza los recursos que quiere, porque esto viendo que son muchos archivos y mucho codigo que se puede solventar con otro codigo mas censillo,
Hola Juan! Tengo una pequeña duda. En el minuto 17:12, añades la instrucción:
$this->conexión_db=null;
para liberar los recursos, pero se encuentra detrás de la instrucción:
return $resultado;
Se llegará a ejecutar si va después del return?
Y realmente es necesario liberar recursos, no se liberan automáticamente cuando no se encuentren más referencias al objeto en cuestión?
He encontrado opiniones de todo tipo en foros y demás, y al final siempre me queda la duda...
Hola !! No, no se llegará a ejecutar. No me di cuenta del detalle. Y los recursos no se liberan cuando no se encuentran más referencias al objeto. No es el caso pero el programa del ejemplo podría continuar y a pesar de no haber más referencias a la conexión, esta seguiría abierta consumiendo recursos. Todo se libera cuando acaba el programa. En el ejemplo acaba con return. Un saludo!!
@@pildorasinformaticas Buenos días estimado Juan, en todo caso ya no es necesario $this->conexión_db=null; basta solo con el return, ya que se estaría cerrando el pograma?
¡Benditos sean los errores de sintaxis que nos ayudan a ser mejores programadores al momento de corregirlos y saber cómo corregirlos! ^^
Como siempre amigo Juan, muy agradecido por los vídeos, los sigo con regularidad, podrías darme un estimado de cuando hablaras sobre las fotos o imágenes en las bases de datos MySql?, es decir incluirlas en el llamado desde un archivo PHP, claro como un dato mas a observar en este tipo de llamado o descripción de articulos de un pais determinado, tal como tus ejemplos pero con las imagenes, mil gracias, un saludo
+Rafael Valbuena Hola !! Gracias por el comentario. Se tratará este tema en el curso: carga de imágenes dinámicas desde BBDD. Lo que no se es cuándo lo veré. Un saludo!!
Gracias a usted por su respuesta, estaré pendiendiente ya que es un tema muy interesante además de importante en el desarrollo de este tipo de interacción, disculpe las ancias, un saludo
Alguien sería tan amable de explicarme ¿Por que en la clase Conexion se utiliza el return? ¿Que función tiene? Min: 12:38 Juan dice que es porque el constructor devuelve la conexión para usarla en otros archivos, pero por ejemplo en el vídeo anterior usando la librería MySqli no se usó ningún return y aún así funcionaba con normalidad el código.
Gracias por el curso! Lo voy siguiendo y se esta haciendo facil de seguir gracias a tu pedagogía.
Te quería preguntar una cosa: Dices al hacer la conexion que no recordabas las constantes definidas en config y pusiste los datos tal y como los recordabas en ese momento sin usar las constantes. Sin embargo yo quise poner las constantes pero al hacerlo no me funcionó el ejemplo. Te pongo lo que yo puse:
$this->conexion_db=new PDO('mysql:host=DB_HOST; dbname=DB_NOMBRE', 'DB_USUARIO', 'DB_CONTRA');
El error que me da asi es que el host no lo encuentra (yo el confing.php lo tengo clavadito al tuyo, asi que por ahi no creo venga el error). Supongo que sera algun tema facil de ver para ti que lo dominas. Si me podrías decir donde esta mi error... :)
Gracias
hola acabo de solucionarlo de la siguiente manera
try {
$this->conexion_db=new PDO('mysql:host='.DB_HOST.';dbname='.DB_NOMBRE, DB_USUARIO, DB_CONTRA);
$this->conexion_db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$this->conexion_db->exec("SET CHARACTER SET UTF8");
return $this->conexion_db;
} catch (Exception $e) {
echo "La linea de error es: ".$e->getLine();
}
Hola juan excelente video, eres un gran profesor, una pregunta aqui no hay peligro de la inyección? si hacen una inyeccion en $dato ? o la funcion prepare() de la clase PDO se encarga en todo caso de ello ?? Gracias
La función prepare() se encarga. Si intentas tú mismo hacer una inyección lo verás. UN saludo!!
Gracias Juan, si es cierto.. una pregunta tengo un servidor de un amigo y pues no lo usa y queria practicar alli esto aprendido de mysql y php y tengo la clave y la contraseña pero no se cual es la direccion lo que tu pones es localhost pero aqui en este hosting no se donde lo podria buscar ? el phpadmin me lo da ? Gracias por responder profe!
Saludos a todos, les comento por si les sirve a alguien. Las clases, si el constructor no lo hacen public, funciona igual. O sea: void Conexion(), donde conexion es el nombre de la clase y de su constructor
buenas tardes, muy buenos los videos, enserio que se aprende mucho, pero tengo dudas con la forma en que se utiliza $this como se en que momentos tengo que usarlos y por que los usas para conectar en el try y chatch, no he podido entender esto? espero me puedas ayudar Gracias.
El $this hace referencia al propio objeto/clase donde se encuentra la instrucción. Es un concepto complejo que se explica en los vídeos dedicados a la POO. Te recomiendo que les vuelas a echar un vistazo a esos vídeos. Un saludo!!
Cuando tu llamas $dato para pasarselo por parametro a la funcion y luego en el otro archivo le pasas la variable que quieres?
HOLA JUAN , porque antes usabas FINALLY { } para vaciar la memoria y aca usas otro concepto
No recuerdo el código de este vídeo porque hace tiempo que lo hice. Pero si te digo que muchas veces se me olvida vaciar la memoria. El programa funciona pero consumo recursos. Lo correcto es utilizar finally para vaciar. Un saludo!
tengo una duda entonces la función isset($_GET) no es necesario para saber que el botón asido pulsado y sacar los datos de la caja del input ?
cual es mejor usar la libreria mysqli o pdo
Es un lío memorizarse las funciones de una librería y de otra. Es importante saber las dos?
Es importante. Sobre todo la última. Un saludo!!
jajaja me pasa eso siempre :) jaja luego que hago el codigo voy corrigiendo cosas :3
Ayudaaaaa!
Tengo el siguiente error:
Error: Call to a member function query() on null
Ya revise sintaxis y demás y no tengo el resultado deseado
Creo que deberían borrar la fecth del php jajajaj!
Te tiene perseguido eh! Jajaja
Bueno gracias otra vez por tus vídeos!
después del return no se ejecuta mas lineas de código, 17:30 $this->$conexion_db =null; no se ejecutaría si es así me equivoco tengo la duda??
No se ami empeze el curso hace u mes lleve la mitad perfecto hasta el video 57 no funciona el código , la clase de conectar funciona bien la ejecuccion de la funcion constructor del gerente funcio a pero la funcion donde ejecutamos el query no funciona ,luego he puesto otro código lo hizo otro chico casi funciona pero a aprobar con dump la variedad donde almazenada el ferch_all me devuelve null, no va bien 57, ahora voy 58, sino busco video similares para quedar con la idea más o menos y espero que estos etapas no sean importante en los próximos videos sino fracaso en terminar los videos del curso
No me busca con los paises con caracteres especiales como españa japón etc... ¿alguna idea?En la URL no me aparece españa, me aparece espac23 y no se que mas cosas raras, ¿eso como se arregla?
saludos.
una pregunta: porque no funciona si usamos post? en el ejemplo de mysqli?, primera parte
Hola Profesor! Disculpe tengo una duda, $this->conexion_db= new PDO('mysql:host=localhost; dbname=pruebas','root','QPI.4390'); Cómo se utlizaría esta sentencia con las variables CONSTANTES que se elaboraron vídeos atrás? Ejemplo hecho de una variable constante: "define('DB_HOST','localhost' )";
Hola !! Sustituyendo dentro de los parámetros (paréntesis) los datos por el nombre de las constantes: new PDO('mysql:host=DB_HOST'.......etc). hay un vídeo en el curso (no recuerdo cuál) en el que lo hacemos con constantes.
Un saludo!!
Creo que hay una incorrección en la parte que cierras la conexión, la pones debajo del return, yo diría que tiene que estar encima del return de esta forma...
$sentencia->closeCursor();
$this->conexion_db=NULL;
return $resultado;
si me equivoco que me corrijan Gracias
hola gracias por los cursos están muy bien explicado solo q tengo una consulta. soy un poco nueva en esto, cuando conectó a base con mysqli no hay ningún problema pero cuando ocupo PDO me dice q la conexión es denegada por el equipo de destino mas o menos asi no se q hacer en ese caso eso quería saber como conciliar ese problema gracias
Hola!! Para resolver esta duda necesitaría mucha más información. ¿Estás trabajando en local? También necesitaría ver el código de tu programa. Si quieres puedes copiarlo y pegarlo por aquí. Si lo veo entre los cientos de mensajes diarios, le echaré un vistazo a ver si veo el problema. Un saludo!!
si estoy en local por el momento
ahi esta el codigo la forma de conectar con pdo deantemano gracias
ya lo arregle faltaba especificarle el puerto :)
hola juan e seguido los tutoriales al pie de la letra pero en caso de que la consulta en poo no se encuentre el articulo o pais que buscamos?
Buen día.
En estos ejemplos de conexión al gestor db con PDO y OOP no se usan marcadores(PAÍSDEORIGEN=:m_pais) ni caracteres especiales(PAÍSDEORIGEN=?)
Pregunta: ¿podría ver inyección sql?
+Miguel PM Pero creo recordar que si se utilizan consultas preparadas explicadas anteriormente en el curso, lo que evitaría inyección sql. UN saludo
¡Gracias!
Estoy siguiendo el curso desde el primer vídeo; Estoy desarrollando una página web y es grato encontrar videotutoriales como este.
Posdata: podrías mencionar o mostrarnos algo de los pruebas en servidores no locales.
me pareció más fácil con mysqli que con PDO, hay alguna diferencia entre usar uno y otro?
La diferencia fundamental es que PDO permite trabajar con todo tipo de BBDD mientras que Mysqli solo trabaja con BBDD MySql. Al utilizar PDO, el proyecto es más escalable ("compatible") con otros proyectos. Un saludo!!
Gracias profesor aqui dejo el codigo para que sea una consulta preparada con todos los comonentes nesesarios
global $conn;
$sql = 'SELECT * FROM productos WHERE PAÍSDEORIGEN =:pais';
//usar marcador con dos puntos al principio
$stmt = $this->conn->prepare($sql);
$stmt->bindParam(':pais', $p);
// Agregar esta linea
$stmt->execute();
// No usar el parametro array()
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
$this->conn = NULL;
return $result;
Hola Juan tengo un problema con la función fetchAll() me dice metodo indefinido no se si esta obsoleta o es algún error mío he revisado los programas y al parecer todo esta bien pero me sigue apareciendo el error. Excelente tu curso saludos a ver cuando quedamos y te invito una copa en Madrid.
Hola Byron. El método fetchAll() sigue estando vigente. Tal vez sea un error en líneas anteriores. En ocasiones la descripción del error no es precisa y nos señala una línea en concreto cuando el error se arrastra de antes. Lo de la copa me lo anoto. ¡Saludos!
a mi me muestra el parent::__construct me dice metodo indefinido y lo tengo puesto igual que juan
hola,vengo haciendo todo el curso ,siempre adaptandolo a bases de dato que ya tengo, en este caso cuando hago select solo muestra las cosas que en la base de datos no son de tipo varchar, las de tipo int, las muestra, en el cotejamiento tengo utf8_spanish2_ci, no se si tiene algo que ver,alguien me puede ayudar???
¡Saludos Profe!
Tengo este error en el index.php, justo donde se recorre con el foreach - Warning: Invalid argument supplied for foreach()
¿A qué se debe ese error? He buscado soluciones, pero ninguna funciona.
copia tu código del index para poder ver cuál es el error
Hola maestro. Como me puedo conectar a una base de datos que esta en un servidor?
Excelentes cursos!! espero pueda aclararme una duda que tengo. En estos momentos tengo conocimientos de HTML y CSS y quiero aprender Javascript, mi objetivo es crear una pagina web sobre ingles donde pueda ayudar a las personas a aprenderlo de manera rapida ya que soy bilingüe pero quiero que sea una buena pagina con su buen diseño, para esto sería correcto usar Wordpress? la verdad que lo estoy probando para ver que tal y no me gusta ya que te ves obligado a adaptar tu diseño a sus plantillas, recomiendas usarlo? tu pagina web me gusta y me pregunto si esta construida con wordpress, saludos.
+Gabriela M. Hola !! Mi página está construida con Drupal. Lo que ocurre es que la plantilla está modificada de forma manual por mi, es decir, el diseño es mío. Puedes hacer lo mismo con WordPress o cualquier otro siempre y cuando tengas conocimientos de HTML y CSS.
En el caso de que vayas a subir exámenes, calificaciones etc. échale un vistazo a Moodle. Es más complejo, pero es laplataforma ideal para una web de cursos. Un saludo
+pildorasinformaticas Por ejemplo para comenzar me gustaría con traducciones de canciones y dar una breve explicación de gramatica y fonetica dentro de ellas para que sea mas facil de practicarlo. Cuando entré en el wordpress quería dividir el texto en 2 partes, a la izquierda la canción en español y a la derecha la de ingles pero se me hizo imposible con las plantillas que tiene, yo ya construí mi sitio con HTML y CSS pero no se como subirlo a un sitio como wordpress, solo mediante FTP y se me hace engorroso en caso de equivocarme tener que entrar al codigo y arreglarlo manualmente, tengo entendido que hoy en dia eso no se debe hacer asi.
Tienes algun curso que pueda sacarme de estas dudas? los que he visto de wordpress aqui en youtube son muy basicos y solo enseñan a crear paginas mediante plantillas que no se adaptan al sitio que quiero para mi.
Hola !! Pues de momento no tengo curso al respecto. WordPress tiene tantas plantillas que es muy difícil que no haya alguna que se adapte a lo que necesitas por complejo que sea.
Pero aún así puede ser que no encuentres ninguna que se adapte a tus necesidades. En ese caso no queda más que modificar el código a mano. Un saludo!!
Ojala algun dia puedas hacer un curso relacionado con eso, una vez tengamos nuestro sitio creado como manejarlo a traves de wordpress y en caso de elegir alguna plantilla en especifico, como modificar su codigo. Gracias por responder! no dejo de sorprenderme por todo lo que sabes al ver que empezaste el curso de android, eres un Dios de la informatica jajaja, saludos desde Venezuela.
Buenas bendiciones, amigo una pregunta porque dejas el array vacio? $sentencia->execute(array());
la variable $sentencia prepara(guarda) la variable $sql que en definitiva es un array, es decir; cuando colocas $sentencia->execute(array()); se está ejecuntando a ella misma y adentro tiene $sql que es un array... creo que esa es la explicacion.
hola como hago para cargar los datos de una bd a una select de html?
A mí no me funcionó el código hasta que puse el formulario como index, siempre me daba error. Para que lo tengan en cuenta.
¿Cómo llegaste a esa conclusión?
@@giovannicarlos5586 muy simple, en la pagina del navegador te debe mostrar el formulario, si a un archivo lo llamas " index" el navegador te lo abrirá automáticamente, por la configuración que trae por defecto xamp,lamp o lo que uses, entonces en esta practica el index en la pagina muestra la tabla y no el formulario; me paso lo mismo que a @Brenda Conzi
mucahs gracias juan, tengo una pregunta que no eh podido solucionar sabes que aun asi con el charset me da error los acentos, ya desde varios tutoriales atras me pasa, lo e dejado pasar pensando que a lo mejor se me escapaba algo pero veo que no
¿LO has arreglado?, a mi me sa también.
Buenas noches, al replicar el codigo me arroja lo siguiente: Fatal error: Uncaught Error: Call to a member function prepare() on null
A mi tambien
En el ejemplo del video tengo problemas con las librerias PDO, no me da el resultado como POO, alguien que me oriente como puedo agregar esas librerias o como saber si ya las tiene mi PHP.
la de problemas he tenido al final era una tonteria al conectar con la base de datos y la he escrito mal jejeje
claro con pdo y poo
Hola profesor. Pude percibir que utilizando PDO, ud encerró la conexión con $this-conexion_db=null, pero no hice lo mismo con POO. No es necesário finalizar la conexion em POO?
Sí, si es necesario pero se me olvida con frecuencia. Me dejo las conexiones abiertas muchas veces. No hay problemas con estos ejemplos que estamos haciendo pero se consumen recursos. Las conexiones se deben cerrar siempre. Un saludo!!
Gracias por la respuesta! Estoy intentando cerrar la conexión poo con la instrucción: $this->conexion_db->close();
En videos anteriores, ud hice eso, pero no fuera dentro de una función, entonces no utilizó $this.
Yo puse dentro de la función get_productos(), en la última linea, abajo de return. En Dreamweaver no pasa nada, dice que no hay error. Pero NetBeans dice: "Unreachable Statement". ¿Sabes decir por qué sucede esto?
Buenas, muchas gracias por tus videos, me han ayudado un mundo en la universidad,
tengoun problema, con el archivo config.php. Me crea las variables y me los incluye y todo en conexion.php peeero, cuando llego al index sale lo siguiente:
Notice: Use of undefined constant DB_HOST - assumed 'DB_HOST' in C:\xampp\htdocs\PF\clases\Conexion.php on line 21
Supongo que ya resolviste tu problema pero igual te comento que lo mas seguro es que estes escribiendo el DB_HOST entre comillas debes ponerlo solo sin comillas.
$this->link=new PDO('mysql:host='. DB_HOST. '; dbname='. DB_NAME , DB_USER, DB_PASSWD);
píldora... por que no haces unos vídeos explicando que es una matriz que es un array que es un bucle que es una herencia que es la poo entre otros
Se explica al principio de este curso. ¿Te has saltado vídeos?
Jeje no, ni lo e comenzado, lo que pasa es que yo lo que hago es descargarlos porque el Wi-Fi algunas veces se cae, y también por la razón de que me gusta ver tus vídeos varias veces, ya que si se me olvida algo al menos se de que no me tengo que preocupar en buscar como loco, y poco a poco uno se graba las cosas, y esa pregunta surgió a que si un amigo me pregunta que es un array no se que decirle porque no se como expresarme en el aspecto de enseñarle algo a alguien
Y me choca que se caiga ya que cuando veo algún vídeo me quedé en un punto en el que me provoca tirar la pc por la ventana, creo que ya te lo é dicho que tus vídeos son de lo mejor, en el aspecto de que enseñas bien... ¿tu eres profesor?
Buenas tardes profesor, ya 2 años después de su publicación no estoy familiarizado con el error PARSE en el archivo conexion.php, agradecería me pueda dar una mano. La línea 17 es en la que se cierra el php.
Parse error: syntax error, unexpected '?> ', expecting function (T_FUNCTION) or const (T_CONST) in C:\xampp\htdocs\PhpMysql\4toPOO-PDO\conexion.php on line 17
El código es tal cual
Que software usas para crear tus tutoriales?
+Python ruby (Sinergia) Camtasia Studio. Un saludo!!
Gracias
Profe me podria explicar pq tanta comilla simple y comilla doble al final en donde se pasa la $pais ?
$consulta=$this->conexion_db->query( ' SELECT * FROM productos WHERE PAISDEORIGEN = " ' . $pais .' " ' );
Hola !! En este caso si te fijas las comillas "padres" son simples, es decir, '..........' y las comillas hijas dobles, es decir, "........"
Cualquier String ha de cerrarse antes de concatenar. Por eso se cierra con comilla simple antes de concatenar $pais. Y después hay que abrir de nuevo un String para la comilla doble y el paréntesis; y como hemos utilizado la comilla simple como comilla padre este segundo String ha de abrirse y cerrarse utilizando comilla simple.
Un saludo!!
Profe y si pongo esto: .... ' SELECT * FROM productos WHERE PAISDEORIGEN = ". $pais . " ' );
Buena Tarde, Me sale un error y no he podido resolverlo:
este mensaje es el que sale: Undefined method '__construct'.intelephense(P1013)
Hola, parece que el error que te da es porque actualmente los constructores no se realizan de esa forma. Te dejo este ejemplo.
public function __construct() {
try{
$this->conexion_db=new PDO('mysql:host=localhost; dbname=pruebas', 'root', '');
$this->conexion_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->conexion_db->exec("set CHARACTER SET utf8");
//return $this->conexion_db;
}catch(Exception $e){
echo "Linea de error: ". $e->getLine();
echo $e->getMessage();
}
}
Yo use fetch_all en vez de fetchAll y igual me salio... Por que??? sabe usted profe por que???
Uno es utilizado con mysqli y el otro con PDO. ¿Qué estás utilizando tú?
use PDO
$resultado->$statement->fetch_all(PDO::FETCH_ASSOC);
Profe me da error en la linea 24 donde arranca el for
require "DevuelveProductos.php";
$pais=$_GET["buscar"];
$productos=new DevuelveProductos();
$array_productos=$productos->get_productos($pais);
for ($array_productos as $elemento) {
echo "";
echo $elemento['CODART'] . "";
echo $elemento['NOMBREARTICULO'] . "";
echo $elemento['SECCION'] . "";
echo $elemento['PRECIO'] . "";
echo $elemento['FECHA'] . "";
echo $elemento['IMPORTADO'] . "";
echo $elemento['PAISDEORIGEN'] . "";
echo "";
echo "";
}
Cambia el for por foreach que és el que puso el Teacher.
profe tengo este error en la linea 17 y no lo encuentro.
SCREAM: Error suppression ignored for
( ! ) Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\cursophp\POO\devuelve_productos_pdo.php on line 17.
El codigo es el siguiente:
public function get_productos($dato){
$sql="select * from productos where PAIS_DE_ORIGEN=' " . $dato . " ' ";
$sentencia=$this->conex_db->prepare($sql);
$sentencia->execute(array());
$resultado=$sentencia->fecthAll(PDO::FECTH_ASSOC);
$sentencia->closeCursor();
return $resultado;
$this->conex_db=null; }
la linea 17 es:
$sentencia=$this->conex_db->prepare($sql);
gracias
No veo el error. Mira a ver si puedes copiar el resto del código también. Tal vez alguien vea el error que yo no veo en este código o en el resto del código que falta. Un saludo!!
hola, ¿que tal? un poco tarde tal vez. Pero el error que te tira creo que es porque conex_db no es un objeto del tipo esperado. Fíjate como has definido la variable, o envia el código si quieres.
Saludos.
Creo que esto fue exactemente lo que intente, no sabia que pasaba con " $resultado=$sentencia->fecthAll()"
Intente colocar en el parámetro PDO::FECTH_ASSOC(justo como lo tienes tu), y me daba error...
Sustituyelo por MYSQLI_ASSOC (No se sirva igualmente como PDO(supongo que no)) pero pues asi me funcionaba...
Mira entiendo que puede ser esto, has intentado acceder al contenido de la variable $this -> conexion_db, pero antes de seguro le has puesto $this -> conexion_db = null. Entonces cuando quieres aplicar el método prepare no es posible por ser una variable ahora nula. Fijate si has pasado a null esa variable en ese archivo o en el de conexión, de ser así, te está poniendo null la variable antes de poder utilizarla. Espero que te haya sido de ayuda
tenía el mismo problema y buscando en san google encontré que
$this->conexion_db no estaba bien inicializado dentro del TRY,
tenía mal puesto el nombre de la base de datos.
Honestamente lo de la modularización no me parece hacerlo más fácil. De todas formas tiene uno que corregir los errores, la única diferencia es que hay que abrir más archivos para buscarlos.