Excelente curso. Muchas gracias por facilitarnos el aprendizaje con estos cursos
8 лет назад+2
Enhorabuena por este gran curso de PHP!. Eres un gran profesor, me gusta como esta todo tan bien estructurado y explicado. Ya contaba con conocimientos previos de php pero estoy viendo todos los videos del curso dado que me estan dando una visión más ordenada y correcta del lenguaje. Saludos y gracias!
Nooooo! Empecé a ver tu curso hace dos semanas y ya me lo acabé! Tendré que ser paciente ahora, y checar mas a fondo los links de documentación que nos has pasado! Muchas gracias por el esfuerzo!! Está excelente el curso.
+David Zavala jejejeje, espero tener más tiempo libre para poder subir vídeos con mayor frecuencia. Mientras te toca esperar. Lo siento. Gracias por seguir mis vídeos. Un saludo !!
Retomando el curso.... Buenisimo como todos los de tu canal. Tuve el siguiente mensage de error: Error: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected Lo solucioné haciendo PRUEBAS.PRODUCTOS en lugar de sólo PRODUCTOS en la linea 20. Espeero que sirva de ayuda por si alguien tuviera el mismo problema. Gracias profe.
Ahora sí, con el método MySQLi con POO no pude hacerlo, pero aquí reemplazando = por LIKE y en excecute entre comillas ponemos “%$buscar%” ya podemos usar caracteres comodín. Esta tontería no conseguí hacerla con MySQLi/POO, puede que sea cabeza dura, pero aquí lo hice sin problemas así que ya le voy agarrando el gusto a esto del PDO/POO jejeje ¡Saludos y muchas gracias por tu gran trabajo que estás haciendo con este curso! PD: Sí, desde hace unos cuantos videos no he dejado de hacer comentarios, pero así era en clase xD de los que preguntaban todo cuando me gustaba el tema, si podía participar compartiendo problemas que me habían surgido y soluciones que había encontrado, pues lo hacía, si no pues igualmente preguntaba para no quedarme con la duda. No es necesario que los respondas todos porque ya me adelanté al video de ruegos y dudas y vi que tenías un sinfín de comentarios, pero bueno, si en algún momento los lees y te han servido de algo, ya sea para subirte la moral por los halagos (que a nadie amarga un dulce) o para darte ideas para el curso, pues me doy por servido.
+Javier Ocampos jajajaja, ok. Gracias por tus comentarios. Si que los leo, pero ya me resulta imposible responderlos todos. Los comentarios van creciendo con el tiempo... Un saludo y gracias por seguir mis vídeos.
Hola Juan, cuando haces el copia/pega a principio del video del archivo del video anterior, la instancia *$base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);* no está incluido en el video anterior y no explicas que significado tiene...
Según la documentación, setAttribute "Establece un atributo en el manejador de la base de datos" las opciones de PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION hacen que en caso de un error se lance una excepción. Debo de suponer que indica al objeto $base que en caso de que ocurra algún error, lance una excepción al estilo de POO. php.net/manual/es/pdo.setattribute.php
A mi me paso que no me funcionaba el ejercicio y comente esa linea: //$base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXEPTION); Después todo ando bien. XD
Saludos colega en el caso del atributo o funcion setAttribute necesita que se le pase un par de parametros en este caso le paso el sigiente PDO::ATTR_ERRMODE que reporta el lo errores y en la forma de PDO::ERRMODE_EXCEPTION exepciones para que pueda ser captados por el catch de todas manera si quiers mas info visita esta web hay fue donde lo entendi www.forosdelweb.com/f68/intentando-entender-pdo-varias-dudas-796590/
Hola Juan! Cada vez me maravillo más con tus conocimientos y no está por demás felicitarte una vez más. Con este código tengo un error que es muy extraño, cuando ejecuto este código: me lanza este error: Error: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected ya revisé una y otra vez el nombre de la base de datos y sigue sin funcionar, quizá hay algo que solo los ojos de la experiencia podrán ver que yo no puedo. De antemano muchas gracias por tu ayuda, bendiciones en tu vida!
Si, lo que se me hace extraño es que es el código del archivo del video anterior, y el del video anterior no me tira ningún error, me tira el "Conexión Ok"
Al parecer, solo era cuestión de reiniciar el paquete del localhost para que funcionara. De todos modos, gracias por toda la ayuda que brindas a la comunidad de programadores, bendiciones en tu día!
Para quien desee usar caracteres comodín, debería hacer lo siguiente 1. Establecer la variable que almacenará la búsqueda como : $busqueda = "%{$_GET['buscar']}%"; 2. Cambiar = por like en la consulta sql del siguiente modo $sql = "SELECT codigoarticulo, seccion, nombrearticulo, precio, paisdeorigen FROM productos WHERE nombrearticulo LIKE ?" ; Con eso debería bastar
Recuerdo hace unos 3-4 años visitar este canal, mientras daba mis primeros pasos en programación, y pensar: 'este sujeto explica todo de forma demasiado complicada, todavía no estoy listo para esta clase de contenido'. Hoy, bastantes líneas de código más tarde, agradezco la existencia de este canal que, alguna vez, me pareció demasiado para mí. Tres mil pulgares arriba!
+Juan Vargas Sí, es un detalle que se me pasó y que ya me comentaron varias veces. Verás como un par de vídeos más adelante se explica detalladamente esa línea de código (disculpen el fallo). Un saludo!!
Buenas tardes! Antes que nada felicitaciones tu canal es muy bueno, bien explicado y ameno. Quisiera preguntarte como podria hacer en vez invocar el submit con el boton "dale" una serie de "checkboxes" para elegir de tu lista de productos y posterior darle al "dale" podrias darme una pista? Saludos.
Hola Juan, Cuál sería la mejor manera de abrir la conexión atendiendo a la seguridad y asegurarse de que nunca queda ninguna conexión abierta? (estoy un tanto obsesionado con la seguridad y...) Te agradezco infinito el esfuerzo que haces para explicarte tan bien como lo haces
+Alex Zubia El tema de la seguridad da para un curso entero y la verdad yo no soy experto. Sin hablar de codificaciones de ficheros, encriptaciones etc, lo más seguro es utilizar POO (clases) y PDO. Es algo que veremos más adelante pero mientras puedes echar un vistazo a este vínculo: www.cristalab.com/tutoriales/clase-para-conexion-a-base-de-datos-con-php-javascript-y-mysql-c107385l/ Un saludo
Hola gracias profe por tus enseñansas exelentes tutoriales y queria hacer un aporte me salio la siguiente execcion en el cathc SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected y es por que el objeto conexion lo tenia con espacios entre los signos iguales $conexion = new PDO('mysql:host = localhost; dbname = usuarios','root',''); la forma que me funciono es $conexion =new PDO('mysql:host=localhost; dbname=usuarios','root','');
Tuve el mismo problema. Intenté esta solución y miles de formas de combinar los espacios pero no hubo caso. Me volví loco hasta que encontré que recomendaban declarar variables con los datos de la conexion. El código que finalmente me funcionó quedó así: try { $serveruser="root"; $serverpassword=""; $conexion = new PDO('mysql:host=localhost;dbname=pruebas', $serveruser, $serverpassword);
Juaaaan!!! excelente curso, para mi eres quien mejor explicas las cosas, y eso que ya me he visto unos cuantos curso de diferentes canales. sigue asi 👍 , y aprovecho para preguntarte: cómo hago para ver la query final, es decir, incluyendo las variables que le hemos pasado como array en el método execute. y cómo podemos usar los comodines % y _ en este tipo de consultas PDO?? sigue así crak!!!
al final lo arregle mi nombre de servidor seguia siendo local host lo unico que yo ponia la variable en la istanciacion de la conexión asi $dbhost. cuando los parametros ' en la declaración ya van entrecomillados ej. mysql:host=localhost;dbname=ejemplodb' yo ponia tal cual la variable entre comillas y no iba. puesto que mi variable ya contiene dos comillas, vi como se concatenaban las variables pero no recuerdo bien como.
bueno mire la ip y el puerto mysql pero ahora me pide un driver el mensaje de error voy a mirar el manual de php pdo y lo mirare a ver q encuetro si lo arreglo comento.
Hola Juan , quiero felicitarte por tu constante asistencia a quienes se estan formando en este lenguaje de programacion y tu tiempo dedicado. Queria hacerte una consulta, como se podria hacer en php, un sitio en el que cada dueno de comercio, al momento de registrarse tenga su propia cuenta de usuario, y en la cual pueda ir ingresando eventos con fechas para que cada usuario que se registra pueda, registrarse a ese evento. La duda es que cada comercio, debera tener su propia cuenta, y como ese comercio puede crear su cuenta conectada la base de datos, deberia utillizar colecciones ? Para que en cada coleccion cuando se registre ese usuario se vaya creando una tabla en la base de datos distinta. Puede ser una solucion esto ?
Hola, veo que en la linea $sql="SELECT Sección, NombreArtículo, Precio, PaísOrigen FROM productos WHERE NombreArtículo=?"; no podemos usar LIKE y el símbolo % por lo que si en la BBDD tuvieramos 'destornillador plano' no lo encontraría. ¿Alguien sabe como podemos hacerlo para que la búsqueda sea más abierta y poder encontrar registros introduciendo información incompleta? Gracias. Juan, no podemos dejar de alabar tu trabajo. No tienes nadie que pueda equipararse. Por cierto, me empieza a interesar "Scala" por si lo tienes en mente. Gracias de nuevo
Creo que en vez de poner todos los nombres, es mejor un forEach, lo digo porque mi tabla tenia 7 registros y no quería ponerlos todos jaja. Saludos. foreach ($registro as $key => $value) { echo "$key: $value "; } echo "";
Hola Juan, agradecido por el curso en general. Me gustaría que me explicaras como apareció la línea 18 del código pues por más que la busco yo no la encuentro en vídeos anteriores. Tendrías la amabilidad de dedicarla unos segundos en tu próximo vídeo ? Gracias
+CARLOS RODRIGUEZ Hola !! Tienes razón. Es una línea de código que debí haber explicado en el vídeo anterior pero se me pasó. Lo mencionaré y explicaré en el próximo vídeo. Perdón por el fallo. Un saludo
Disculpe, si tuviera una pagina sobre comidas. y tuviera un input text de buscador, se tendría que hacer las mismas funciones del video como para que cuando el usuario quiera buscar algo(ejm una comida), la encuentre verdad?.
Para los carácteres especiales ya no es factible setAttribute() les saldrá error. tienen que modificar esta linea: $base=new PDO('mysql:host=localhost; dbname=pruebas', 'root', ' '); por está: $base=new PDO('mysql:host=localhost; dbname=pruebas', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
Por si a alguien le pasa. En la sentencia SQL hay que poner "SELECT........FROM pruebas.productos... Para indicarle que productos pertenece a la base de datos pruebas o puede dar error de lo contrario
Es buena costumbre indicarlo. No obstante si estás trabajando en MySql y seleccionaste previamente la BBDD antes de abrir el panel de SQL, puedes omitir indicar la BBDD. Un saludo!!
Hola Juan, como siempre agradezco el gran esfuerzo por tu parte que haces en esta Canal y la horas que invierte en explicar estos Tutoriales que no es cosa fácil y tu lo haces que parezca fácil jajajajaja. Una consulta o pregunta: No se si no lo he visto en algún vídeo o me lo he saltado pero ando tratando de buscar la forma de obtener en un Array los campos de una tabla, es decir.... Tengo una tabla que se llama Frutas con 4 campos, (Tipo,Peso,Precio,Origen) pues la idea es obtener los campos y guardar esos 4 campos en un Array para luego imprimir en el Explorador, siempre obtenemos el registro de los campos, pero quiero saber si se pueden obtener los Campos.. Bueno muchas gracias y a pasar un buen día
Depende de si estás utilizando a la hora de programar en PHP un estilo orientado a procedimientos o un estilo orientado a objetos. Hablo de esto en el curso. Un saludo!!
Entiendo que utiliza exec("SET CHARACTER SET utf8") para anexar o definir el tipo de caracteres al objeto de conexión $base que ya se creo en primera instancia, como dice el profesor es cuestión del procedimiento que estas utilizando, incluso puedes definir la codificación de caracteres dentro del objeto $base, por ejemplo . $base = new PDO('mysql:host=localhost;dbname=pruebas;charset=utf8','usuario','contraseña');
Hola Juan, gracias por el video pero quisiera hacerte una consulta. En el caso de que ingresen un nombre de articulo que no existe en la tabla el execute() se ejecutaría de todas formas devolviendo true al condicional. Entonces mi pregunta es como valido que el SELECT me devuelva algún valor? Te dejo mi codigo por si no se entiende a lo que me refiero: try{ $con = new PDO("mysql:host=$host;dbname=$database", $user, $password); $sql="SELECT * FROM users WHERE id = ?"; $sqlprep = $con->prepare($sql); $ar_val = array($_REQUEST['updateID']); if($sqlprep->execute($ar_val)){ while($row=$sqlprep->fetch()){ echo "ID: ".$row['id'].""; echo "Name: ".$row['name'].""; echo "Pass:".$row['pass'].""; echo "Email:".$row['email'].""; echo ""; $name = $row['name']; $pass = $row['pass']; $email = $row['email']; } }//aca quisiera un else cuando no se encuentra el ID ingresado. } Desde ya muchas gracias!
Hola profesor, con esta forma de trabajar PDO, me pueden seguir haciendo inyeccion SQL? ' or ' 1' ='1 ?? Si es que sí se puede, lo vamos a solucionar en los próximos videos? Y si no se puede hacer esa inyeccion sql, por qué no puede o mejor dicho que hace que esa inyeccion no funcione. Graaacias!!1
Hola Juan... primero felicitarte y agradecerte por el curso eres el mejor profesor de la web en verdad que he aprendido mucho... Juan puede sonar muy tonta la pregunta pero cuando utilizas el objeto $resultado en la linea 26 se supone que el objeto viene cargado con el recordset de la linea 24? lo pregunto por que en la linea 24 no hubo asignación de variable y me pregunto donde pudo haber almacenado el recordset, lo que entiendo es que $resultado->execute(array("Destornillador")) solo ejecuta el metodo pero no veo donde lo guarda a diferencia de la linea 26 que utilizas $registro para ir almacenando la operación del bucle. Te agradezco la respuesta y me perdonas si tengo algún vacío conceptual. Muchas gracias.
Hola !! Tú duda es de lo más razonable así que no te preocupes por preguntar cosas "lógicas". La función execute se encarga de ejecutar la sentencia preparada. Es decir, tenemos una sentencia sql ya almacenada (y este es el quid de tu pregunta) en la variable resultado. Pero no vale son con tenerla almacenada, sino que hay que ejecutarla también y de eso se encarga execute. Este método execute es booleano, es decir, solo devuelve true o false. True si la ejecución ha tenido éxito y false si no lo ha tenido. Resumiendo, una consulta preparada necesita dos pasos: 1. almacenarse y 2. ejecutarse. Por ese orden. Espero haber aclarado algo. Mira este enlace: php.net/manual/es/pdostatement.execute.php Un saludo!!
También en el while se puede usar como: $resultados=$base->prepare($consulta); if ($resultados->execute(array($_GET['buscar']))) { while ($row = $resultados->fetch()) { print_r($row); } }
Excelente contenido pildorasinformaticas. Tengo una duda, como puedo devolver el numero de filas afectadas por un SELECT aplicando PDO con el objetivo de vlaidar si ya existe ese registro antes de realizar el INSERT
hola Ronny el metodo para el numero de columnas es rowCount(), en ocasiones funciona para SELECT, te recomiendo consulta PDO php, e ir practicando los metodos de la clase PDO, solo asi se va aprendiendo te dejo parte del codigo: $resultado->execute();
Pregunta. ¿La forma de trabajo Try-Catch es recomendable solo al utilizar PDO o se puede usar con la API MySqli? Y si se puede o se debe usar con las demás ¿cuál sería la forma adecuada? Gracias.
Se puede trabajar perfectamente con procedimientos almacenados con PHP y MySql. también son SQL Server. En mi curso de SQL explico cómo trabajar con procedimientos almacenados en MySql. Un saludo!!
hola profe perdone si hago este comentario demasiado tarde, resulta que estudiado visual studio. net a 3 capas, es decir capa variables, capa datos y capa vista y ahora estudiado PHP no se si se puede escribir un procedimiento almacenado en mysql y llevar directamente en PHP, porque no me sale. Porque lo que hace usted es escribir la sentencia sql dentro de PHP. Y lo que quiero saber es que si se puede escribir una consulta en procedimineto almacenado en sql y llevar el nombre del procedimiento en PHP. En internet no he visto ningun ejemplo al respecto, pero si es posible, quisiera su orientacion a modo de ejemplo.
Olá, tudo bem? Tenho acompanhado seus videos e aprendido muito, só que agora me deparei com o seguinte problema: #TimeMemoryFunctionLocation 10.0000379376{main} Você tem ideia de como resolver isso.? Desde já agradeço.
Olá. Porque não é o que este erro é devido. Mas se você consultar no Google você pode encontrar uma solução: stackoverflow.com/questions/23020121/stack-overflow-call-stack-timememoryfunctionlocation-10-0000143728 stackoverflow.com/questions/25126027/notice-undefined-index-call-stack-timememoryfunctionlocation
Hola Juan, muchas gracias por las explicaciones =) Tengo un problema con el Charset. He escrito $conexion->exec("SET CHARACTER SET utf8"); He creado una sentencia SQL para insertar en la tabla un registro con carácteres latinos. Concretamente: "Hóla" Todo correcto. Ahora bien, si escribo un: echo "Hola"; , la pantalla me imprime "Hóla" Es un poco frustrante =( ¿Alguna ayudita? =) Gracias, un abrazo!
Hola Que tal Tengo una duda si al momento de generar la consulta $sql= "SELECT * FROM clientes WHERE Nombre = ?"; quiero usar un LIKE o INNER JOIN. como lo haces? Ya lo intente y no lo acepta. Gracias y un saludo explicas muy bien
Hola, gracias por los tutos Tengo una duda, para hacer una consulta, se puede aportar el script de la conexion de la BB.DD a traves de require 'conexion_bd'; por ejemplo sin volver a copiar todas las líneas ?
Hola no se si mi repuesta te ayude, yo hice mi archivo externo de conexion.php y lo llamo con require_once la conexion se finaliza luego de ejecutar la consulta y no en el archivo externo.
Hola Juan ante todo muchisimas gracias por tu trabajo, tengo una duda, me apreció una error haciendo referencia a la linea 12 de tu código cuando declaras $busqueda=$_GET["buscar"]; me da este error Notice: Undefined index: buscar in ..... on line 12, muchas gracias por todos tus cursos y felices fiestas.
+Kaneda Kazama Hola !! Según el error, en tu formulario el campo de procedencia del dato no se llama "buscar" sino que debe tener otro nombre. Revisa el nombre del campo del formulario. Si no fuera este el motivo, copia y pega por aquí todo tu código para que pueda localizar el error. Un saludo
+pildorasinformaticas Como me señalastes que podia haber un error en el name del formulario lo revisé y por eso no lo te lo pasé fallo mio, te lo dejo en el siguiente mensaje, muchas gracias y un saludo.
Ayuda Parse error: syntax error, unexpected 'while' (T_WHILE) in C:\xampp\htdocs\login\busqueda.php on line 46 no entiendo el error, lo hice tal y como el video, esta obsoleto algo en el bucle
Buenos días Prof. desde Venezuela, he seguido este curso desde el principio y me ha parecido demaciado educativo inclusive para mi que nunca habia echo o estudiado nada que tenga que ver con Programación. Ahorita tengo un problema y lo más seguro que es de mi parte pero no logro dar con el problema, una vez que pruebo el ejercicio del presente video me arroja el siguiente error: Error no detectado: No se puede usar el objeto de tipo PDOStatement como matriz en C: \ xampp \ htdocs \ CursoPHP3 \ pagina_busqueda_pdo.php: 31 Seguimiento de pila: # 0 {main} lanzado en C: \ xampp \ htdocs \ CursoPHP3 \ pagina_busqueda_pdo. php en la línea 31. Le agradezco si me puede orientar a ver si logro encontrar mi error, gracias por su pronta respuesta
Hola Juan, una pregunta con respecto a los caracteres comodín que vimos en videos pasados! Se puede usar caracteres comodín (% _)en una consulta preparadas? me surgió la duda al hacer el ejercicio del video!. PD. gracias por los cursos que nos ofreces, son muy buenos y de gran utilidad para aprender bien las cosas Saludos!
Hola Profesor Juan Aca ando por mientras sube mas videos de java, y me di cuenta que no todos los criterios de busqueda funcionan, si pones otro nombre como por ejemplo llave no sale nada al igual que raqueta, cenicero y varias mas que no muestra resultado alguno, todas las que pones en el video si las muestra, pero varias no, no se a que se deba esto, no se si alguien le paso lo mismo Saludos PD estupendos videos
Tendría que revisar el vídeo para recordar de qué hablaba en él y cuál era el código. pero lo que me comentas me resulta extraño. ¿Están esos artículos en tu tabla? ¿No los habrás eliminado anteriormente con alguna consulta de eliminación?
es el mismo codigo, la misma base que usted tiene, me dan los mismos resultados de este video, pero cuando pongo otro criterio por ejemplo mancuernas no arroja nada, como si no existiera esa palabra en el campo y lo estoy viendo en la base de datos, y en base de nombrearticulo pongo la busqueda y nomas los que usted menciona si funcionan
Hola, saludos desde Costa Rica, tengo problemas al tratar de incluir la conexion en el archivo de consulta, me da error. Muchas gracias por los cursos, vengo desde el primero de php.... Son adictivos ;-).
Profe muchas gracias por estos vídeos me han servido mucho, quería hacer una consulta ¿es posible usar caracteres comodín % o _ en consultas preparadas? Saludos.
Se debe usar LIKE en la consulta $sql, en lugar del y la variable que reemplazara el comodin ?, la organizas para que quede de la siguiente manera $NomArticulo=$_GET["buscar"]; $NomArticulo='%'.$NomArticulo.'%';
Una duda que tengo, Juan. En este video veo que, en la línea 16, aparece una línea de código que no aparece en el anterior video. No sé si es que hubo un corte o algo por el estilo. Un saludo. P.D: Vale, Juan. Veo que dos videos más adelante explicas precisamente esto de lo que hablo. Perdona que te haya dado el coñazo como el resto de los que te han preguntado. Lo dejo aquí editado por si alguien más se pregunta para qué sirve esa línea y se/te ahorre las molestias. Un saludo otra vez.
Sí, sí, no te preocupes. Se trata de algo que luego explicas (un par de videos más adelante). He editado mi mensaje comentándolo por si alguien más se despista con esa línea. Un saludo.
No se si alguien lo colocó antes, pero ese sería el codigo para usar %. $sql="SELECT NOMBREARTICULO, SECCION, PRECIO, PAISDEORIGEN FROM PRODUCTOS WHERE NOMBREARTICULO like ?"; $resultado=$base->prepare($sql); $resultado->execute(array("%$busqueda%"));
Olá, obrigado pela sua atenção. O erro é esse: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens. Só que a quantidade de parâmetro está igual a do banco de dados, com exceção da chave primária os outros campos são varchar. Não consigo entender. Se puder ajudar agradeço.
si profe me refiero que devuelva un por ejemplo: USUARIO NO ENCONTRADO!!! CON PDO como se hace, ya se como se hace con POO Y MSQL aqui lo aprendi, pero no con PDO
Dejo un pequeño aporte, si declaramos luego de ejecutar el objeto PDOStatement un count, y cerramos el bucle while, podemos evaluar si el producto existe o no. $resultado->execute(array($busqueda)); $count=$resultado->rowCount(); //ahora hay que imprimir el objeto PDOStatement
if($count>0){ while($registro=$resultado->fetch(PDO::FETCH_ASSOC)){ echo "Nombre: $registro[NOMBREARTICULO] Seccion: $registro[SECCION] Precio: $registro[PRECIO] Pais: $registro[PAISDEORIGEN]"; echo "";} } else{ echo "No existe el producto"; }
Hola he probado esto y funciona para un articulo cuyo nombre sea simple Pantalón, destornillador, etc. Pero ¿como busco un articulo que necesite el operador % por ejemplo Pantalón si suponemos que en mi BBDD tengo varios (por ejemplo pantalón de pana y pantalón vaquero)?
Me respondo a mismo, consulte la pagina de PHP.net y lo encontré : los marcadores de posición deben emplearse en el lugar del valor completo $sentencia->execute(array("%$_GET[name]%"));
Hola una observación, el método "exec" del objeto PDO ejecuta una consulta SQL a la BBDD, y devuelve el número de filas afectadas, así está descrito en el estándar. Lo que usted está poniendo como argumento de "exec" es una consulta SQL para establecer el juego de caracteres por defecto a utilizar en la BBDD. Yo sé que esto usted ya lo sabe pero lo digo para los que apenas comienzan y no noten esta diferencia. O sea está bien lo que hizo pero le faltó decir esta observación. Por otro lado, también le faltó recalcar que el objeto PDOStatement no es exactamente un "resulset" (tabla virtual), en principio es una consulta preparada, pero después de ser ejecutada se convierte a "resulset", es decir, ya representa la tabla virtual (conjunto de resultados), y también así lo dice en el estándar.
Hola Profe tengo un problema con mi código al usar el comando finally tengo erro de sintaxis pero no me deja ejecutar el codigo SCREAM: Error suppression ignored for ( ! ) Parse error: syntax error, unexpected '{' in C:\wamp\www\Curso_php\PDO\Conexion_PDO.php on line 41 Profe me podria ayudar a entender... Profe si elimino l comando finally se me quita el error y puedo ejecutar el código en su totalidad. Gracias
En la línea $sql="SELECT Sección, NombreArtículo, Precio, PaísOrigen FROM productos WHERE NombreArtículo=?"; donde está la interrogación, no podemos poner la variable $busqueda como en las prácticas anteriores? porqué es la interrogación?
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'pruebas.productos' doesn't exist Me sale este error y no entiendo por qué, ya que comprobando la BBDD 'pruebas', la tabla 'productos' existe.
Tio pildoras tengo un problema, estoy usando eclipse (con vista PHP desde luego) para programar en PHP y me sale un error: Error :SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?CULO,SECCI?N,PRECIO,PA?SDEORIGEN FROM PRODUCTOS WHERE NOMBREART?CULO='TUBOS'' at line 1 Pero cuando lo ejecuto con otro editor de texto si funciona, por que sera?
Mire teacher cree tres archivos uno llamado conexion otro pagina_busqueda_pdo y el último formulario_busqueda_pdo en conexion eliminé finally porque me daba error, agrege el $conexion = null que es para vaciar los datos o mejor dicho cerrar la conexion en el segundo archivo llamado pagina. la pregunta es esta bien o es buena practica agregar o cerrar la conexión en ese archivo y no en el archivo de conexion, saludes y aqui aprendiendo demaciado muchas gracias. ----------------------------------------------------------------------------- -----------------------------------------------------------------------------
Formulario Busqueda Mostrar Articulo: Nombre Articulo
No me funciona este código y en el finally me marca un error dreamweaver. El código del video anterior tampoco me funciono Me sale este error ( ! ) Parse error: syntax error, unexpected '{' in C:\wamp\www\CursoPHP\pag_busq_pdo.php on line 38 y si quito el finally ( ! ) Fatal error: Call to undefined function setAttribute() in C:\wamp\www\CursoPHP\pag_busq_pdo.php on line 16 (He marcado la linea 16 en el código) Gracias de antemano si alguien ve donde puede estar el error o errores qu e tenga.
hola profe te voy a dejar un codiguito no se por que me da el error ya busque en sant google. es sencillo el error es el siguiente me da un problema con el nombre del host lo tengo en hostinger gratuito. hasta ahora he utilizado el mimo localhost ya que cuelgo el archivo php donde esta el servidor. mire en stackoverflow y una solucion es meter la ip y el puerto. pero lo hice y no me funciono . hasta ahora con mysqli y mysql me estaba funcionando ese nombre a ver si pudieras orientarme hacia donde buscar. error:SQLSTATE[HY000] [2005] Unknow MySQL server host ' $dbhost '(-2) este es el error mi variable $dbhost = "localhost"; gracias de antemano y cuando pueda un saludo .
+DANIEL URBANO DE LA RUA Hola !! Debes mirar en tu panel de control de hostinger cuál es el nombre de host de la BBDD. Localhost es el nombre del host de las BBDD en local, es decir, en tu propio PC. pero cuando trabajas en "real" el nombre del host nunca será localhost. Cada hosting tiene el suyo. Una vez pongas el nombre correcto no debería haber problemas. Un saludo
Gracias lo mirare en un raton gracias no podia dejar de pensar jiji gracias seguro los reyes te traen algo bueno esperó la pase bien. por su horario deduzco que viene de vuelta de la cavalgata de revés. Jiji
Hola si quieren agrandar el código aqui dejo esta condicional que ayuda avisarte si existe o no lo que intentas buscar (filas afectadas por el query). asi evitamos la pantalla blanco sin resultados. System.out.println("Adiós."); $cuenta=$resultado->rowCount(); if($cuenta==0){ echo "No se encontrado registros referente a ".$busqueda; }
Antes que nada muy buena su explicación, pero me aparece el siguiente error: Fatal error: Uncaught Error: Call to a member function prepare() on string in C:\xampp\htdocs\Projects\PDO CONSULTS.php:19 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Projects\PDO CONSULTS.php on line 19. adjunto aqui el codigo de antemano, gracias por sus respuestas. donde me marca el error es en $resultado=$base->prepare($sql);
yo tenia ese mismo error, y fue por una "," . Que estaba entre el dbname y el port, lo sustituí por un ";"y funciono. (este era el que no funcionaba) $base = new PDO('mysql:host=localhost; dbname=pruebas,port=3308','root', ''); (y este funciona) $base = new PDO('mysql:host=localhost; dbname=pruebas;port=3308','root', '');
Ing. admiro tu trabajo y te he ddado en todos lo que he visto un like, pero en comparacion de los anteriores este quedo muy ambiguo y con algunos errores, creo seria bueno hacer otro. Saludos
Hola a todos quisiera saber si alguien puede darme una mano ya que eh seguido los pasos del video y me arroja el siguiente error Error: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected, viendo la forma de encontrar donde estaba la falla comenté la parte del codigo donde va la funcion $resultado->execute(array($buscar)); y resulta ser que esa porcion de codigo es la que me genera el error, comparando el codigo en mi editor de codigo con el del video ambos son iguales asi que no se porque ocurre esto. Si alguien puede ayudarme se los voy a agradecer.
¿Podria alguien resolverme esta duda?. Todo funciona correctamente hasta que me conecto con el formulario. lo he hecho todo igual que el video, pero no me funciona. me da el siguiente error. "Notice: Undefined index: buscar in C:\wamp64\www\curso_php\pagina_busqueda_pdo.php on line 11", este es el contenido de la linea que me señala: $busqueda=$_GET["buscar"]; No encuentro el error porque lo he hecho todo igual que el video. cuando establezco un valor fijo funciona correctamente. El error me da cuando quiero cambiar el valor fijo por la variable $busqueda. Alguna idea de donde puede estar el error.
A mi también. No se trata de memorizar, sino de entender. Para buscar una función que no recuerdes utiliza google, la mejor herramienta del programador. Un saludo!!
Hola profe, eh estado buscando el problema pero no se que pasa, hice todo el codigo tal cual el video y me sale el siguiente error: Error: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected, si comento la linea esta: $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); No me sale error pero tampoco me sale ningun resultado de la base de datos, le dejo mi codigo para ver si usted le encuentra el error: Gracias : )
Fatal error: Uncaught Error: Call to a member function prepare() on string in C:\xampp\htdocs\dashboard\prueba\config\conectpdo.php:10 Stack trace: #0 {main} thrown in C:\xampp\htdocs\dashboard\prueba\config\conectpdo.php on line 10. no he podido solucionar este error
Hola, tengo un problema con el código, quizá ya sea Juan o alguno de ustedes puedan darme una mano, resulta que el fetch no me devuelve nada y no logro localizar el error (que no me figura que tenga ninguno!) probe usando bindParam() y bindValue() pero no lo resolvio, cambie el codigo sql y los parametros en execute, probe usando ?, :esto, LIKE, =, quitando el codigo html para manejar todo con una unica pagina php.. pero no me funciona. Quiza algún iluminado vea lo que yo no jaja. Este es el codigo: (ignoro el html porque es el mismo que use ya mil veces y funciona, igual al del video, el nombre del input text es "buscar") $busqueda=$_GET["buscar"]; try{ $base= new PDO("mysql:host=localhost; name=curso_sql", "root", ""); $base->exec("SET CHARACTER SET utf8"); $sql="SELECT CÓDIGOARTÍCULO, NOMBREARTÍCULO, SECCIÓN, PRECIO, PAÍSDEORIGEN FROM PRODUCTOS WHERE PAÍSDEORIGEN = ?"; $resultado=$base->prepare($sql); $resultado->execute(array($busqueda)); //-echos con codigo HTML totalmente ignorables delante: echo " POR QUE NO QUIERES FUNCIONAR? "; echo '
Lo resolvi finalmente! Al entender en el video 55 como funcionaba la línea $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); pude encontrar cuál era realmente el problema, y es que por algun motivo el codigo "no entendia" que base de datos estaba usando, cambie dentro del codigo SQL "PRODUCTOS" por "CURSO_SQL.PRODUCTOS" y al fin funciona! Por si a alguien le pasa lo mismo, ahi la solucion!
Solucion fase 2: El problema estaba en la linea $base= new PDO("mysql:host=localhost; name=curso_sql", "root", ""); no es name, es dbname: $base= new PDO("mysql:host=localhost; dbname=curso_sql", "root", ""); ya con eso no es necesario aclarar en la sentencia SQL, sucede que no estaba definida la base de datos
@@TheSensei88 muchas gracias a mi me ha pasado y llevaba un rato dando vueltas y al leer tu comentario he visto la luz, he de poner el nombre de la bbdd antes del nombre de la tabla, gracias otra vez
Prueba a Poner un Like (no un igual) en la consulta : $sql="SELECT * FROM articulos WHERE nombre LIKE ?"; Los campos de tipo texto se comparan con LIKE a mi no me funcionaba con =. ah y en la asignacion de la variable que usas como criterio haz : $busqueda="%" . $_GET["buscar"] . "%"; y ya esta
Esta linea se explica en el video 55 $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Gracias!
vaya, aunque muy viejo tu video sigue siendo muy útil, por fin pude mostrar los datos impresos en pantalla gracias a ti
Excelente curso. Muchas gracias por facilitarnos el aprendizaje con estos cursos
Enhorabuena por este gran curso de PHP!. Eres un gran profesor, me gusta como esta todo tan bien estructurado y explicado. Ya contaba con conocimientos previos de php pero estoy viendo todos los videos del curso dado que me estan dando una visión más ordenada y correcta del lenguaje.
Saludos y gracias!
Gracias a ti por el comentario y por seguir los vídeos. Un saludo!!
Nooooo! Empecé a ver tu curso hace dos semanas y ya me lo acabé! Tendré que ser paciente ahora, y checar mas a fondo los links de documentación que nos has pasado!
Muchas gracias por el esfuerzo!! Está excelente el curso.
+David Zavala jejejeje, espero tener más tiempo libre para poder subir vídeos con mayor frecuencia. Mientras te toca esperar. Lo siento. Gracias por seguir mis vídeos. Un saludo !!
Excelentes curso de php, profesor Dios los bendiga por dedicar tiempo para enseñarno este lenguaje de programación
Excelente profesor Juan, me encantas tus tutos!!
gracias profesor, el dia de ayer llegue hasta esta clase, muchas gracias por sus clases, he aprendido mucho
Retomando el curso....
Buenisimo como todos los de tu canal.
Tuve el siguiente mensage de error:
Error: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected
Lo solucioné haciendo PRUEBAS.PRODUCTOS en lugar de sólo PRODUCTOS en la linea 20.
Espeero que sirva de ayuda por si alguien tuviera el mismo problema.
Gracias profe.
Perfecto!! Gracias por el aporte. Un saludo
Ahora sí, con el método MySQLi con POO no pude hacerlo, pero aquí reemplazando = por LIKE y en excecute entre comillas ponemos “%$buscar%” ya podemos usar caracteres comodín. Esta tontería no conseguí hacerla con MySQLi/POO, puede que sea cabeza dura, pero aquí lo hice sin problemas así que ya le voy agarrando el gusto a esto del PDO/POO jejeje
¡Saludos y muchas gracias por tu gran trabajo que estás haciendo con este curso!
PD: Sí, desde hace unos cuantos videos no he dejado de hacer comentarios, pero así era en clase xD de los que preguntaban todo cuando me gustaba el tema, si podía participar compartiendo problemas que me habían surgido y soluciones que había encontrado, pues lo hacía, si no pues igualmente preguntaba para no quedarme con la duda. No es necesario que los respondas todos porque ya me adelanté al video de ruegos y dudas y vi que tenías un sinfín de comentarios, pero bueno, si en algún momento los lees y te han servido de algo, ya sea para subirte la moral por los halagos (que a nadie amarga un dulce) o para darte ideas para el curso, pues me doy por servido.
+Javier Ocampos jajajaja, ok. Gracias por tus comentarios. Si que los leo, pero ya me resulta imposible responderlos todos. Los comentarios van creciendo con el tiempo...
Un saludo y gracias por seguir mis vídeos.
GRACIAS :D
Cordial saludo Don Juan, seguimos adelante.
Un saludo.
+Antonio Valderrama Ánimo !! Saludos
Saludos buenos videos, me gustan soy nuevo suscriptor siga adelante, es el unico curso completo que he visto.... siga adelante
+Marre Rami Gracias !! Seguiré adelante con ello. Un saludo
al fin un video bien explicado de esto, muchas gracias
Hola Juan, cuando haces el copia/pega a principio del video del archivo del video anterior, la instancia *$base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);* no está incluido en el video anterior y no explicas que significado tiene...
Cierto! yo sigo con la duda y sigo el curso desde el video 1, por favor nos lo podria aclarar? gracias de antemano
Según la documentación, setAttribute "Establece un atributo en el manejador de la base de datos" las opciones de PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION hacen que en caso de un error se lance una excepción. Debo de suponer que indica al objeto $base que en caso de que ocurra algún error, lance una excepción al estilo de POO.
php.net/manual/es/pdo.setattribute.php
A mi me paso que no me funcionaba el ejercicio y comente esa linea:
//$base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXEPTION);
Después todo ando bien. XD
Saludos colega en el caso del atributo o funcion setAttribute necesita que se le pase un par de parametros en este caso le paso el sigiente PDO::ATTR_ERRMODE que reporta el lo errores y en la forma de PDO::ERRMODE_EXCEPTION exepciones para que pueda ser captados por el catch de todas manera si quiers mas info visita esta web hay fue donde lo entendi www.forosdelweb.com/f68/intentando-entender-pdo-varias-dudas-796590/
Esa línea no es necesaria?
Epa Juan! No sé si es que est video se me haya hecho un poco más complicado que los anteriores pero me ha encantado y quería decirte GRACIAS!
+aaron aaron aaron Gracias a ti por seguir los vídeos. Un saludo
Gracias excelente explicación!
Hola Juan! Cada vez me maravillo más con tus conocimientos y no está por demás felicitarte una vez más. Con este código tengo un error que es muy extraño, cuando ejecuto este código:
me lanza este error:
Error: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected
ya revisé una y otra vez el nombre de la base de datos y sigue sin funcionar, quizá hay algo que solo los ojos de la experiencia podrán ver que yo no puedo. De antemano muchas gracias por tu ayuda, bendiciones en tu vida!
Gracias por el comentario. ¿Has comprobado si el nombre de la BBDD "pruebas" lleva algún espacio en blanco al principio o al final del nombre?
Si, lo que se me hace extraño es que es el código del archivo del video anterior, y el del video anterior no me tira ningún error, me tira el "Conexión Ok"
Al parecer, solo era cuestión de reiniciar el paquete del localhost para que funcionara. De todos modos, gracias por toda la ayuda que brindas a la comunidad de programadores, bendiciones en tu día!
Para quien desee usar caracteres comodín, debería hacer lo siguiente
1. Establecer la variable que almacenará la búsqueda como :
$busqueda = "%{$_GET['buscar']}%";
2. Cambiar = por like en la consulta sql del siguiente modo
$sql = "SELECT codigoarticulo, seccion, nombrearticulo, precio, paisdeorigen FROM productos WHERE nombrearticulo LIKE ?" ;
Con eso debería bastar
Gracias por el aporte amigo, funciona de maravilla (Y)
excelente
Recuerdo hace unos 3-4 años visitar este canal, mientras daba mis primeros pasos en programación, y pensar: 'este sujeto explica todo de forma demasiado complicada, todavía no estoy listo para esta clase de contenido'.
Hoy, bastantes líneas de código más tarde, agradezco la existencia de este canal que, alguna vez, me pareció demasiado para mí.
Tres mil pulgares arriba!
Excelente explicación! 🤗
La linea de setAttribute no existe en el video anterior........
+Juan Vargas Sí, es un detalle que se me pasó y que ya me comentaron varias veces. Verás como un par de vídeos más adelante se explica detalladamente esa línea de código (disculpen el fallo). Un saludo!!
Gracias por contestar, y has puesto como llenar una tabla con datos mysql PDO?
Buenas tardes!
Antes que nada felicitaciones tu canal es muy bueno, bien explicado y ameno.
Quisiera preguntarte como podria hacer en vez invocar el submit con el boton "dale" una serie de "checkboxes" para elegir de tu lista de productos y posterior darle al "dale" podrias darme una pista?
Saludos.
Hola Juan,
Cuál sería la mejor manera de abrir la conexión atendiendo a la seguridad y asegurarse de que nunca queda ninguna conexión abierta? (estoy un tanto obsesionado con la seguridad y...)
Te agradezco infinito el esfuerzo que haces para explicarte tan bien como lo haces
+Alex Zubia El tema de la seguridad da para un curso entero y la verdad yo no soy experto. Sin hablar de codificaciones de ficheros, encriptaciones etc, lo más seguro es utilizar POO (clases) y PDO. Es algo que veremos más adelante pero mientras puedes echar un vistazo a este vínculo:
www.cristalab.com/tutoriales/clase-para-conexion-a-base-de-datos-con-php-javascript-y-mysql-c107385l/
Un saludo
Hola gracias profe por tus enseñansas exelentes tutoriales y queria hacer un aporte me
salio la siguiente execcion en el cathc SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected y es por que el objeto conexion lo tenia con espacios entre los signos iguales $conexion = new PDO('mysql:host = localhost; dbname = usuarios','root','');
la forma que me funciono es
$conexion =new PDO('mysql:host=localhost; dbname=usuarios','root','');
Gracias por tu comentario y por el aporte. Seguro que es de utilidad para todos. Un saludo!!
Tuve el mismo problema. Intenté esta solución y miles de formas de combinar los espacios pero no hubo caso.
Me volví loco hasta que encontré que recomendaban declarar variables con los datos de la conexion. El código que finalmente me funcionó quedó así:
try {
$serveruser="root";
$serverpassword="";
$conexion = new PDO('mysql:host=localhost;dbname=pruebas', $serveruser, $serverpassword);
Muchísimas gracias... (Y)
Juaaaan!!! excelente curso, para mi eres quien mejor explicas las cosas, y eso que ya me he visto unos cuantos curso de diferentes canales. sigue asi 👍 , y aprovecho para preguntarte: cómo hago para ver la query final, es decir, incluyendo las variables que le hemos pasado como array en el método execute.
y cómo podemos usar los comodines % y _ en este tipo de consultas PDO??
sigue así crak!!!
al final lo arregle mi nombre de servidor seguia siendo local host lo unico que yo ponia la variable en la istanciacion de la conexión asi $dbhost. cuando los parametros ' en la declaración ya van entrecomillados ej. mysql:host=localhost;dbname=ejemplodb' yo ponia tal cual la variable entre comillas y no iba. puesto que mi variable ya contiene dos comillas, vi como se concatenaban las variables pero no recuerdo bien como.
bueno mire la ip y el puerto mysql pero ahora me pide un driver el mensaje de error voy a mirar el manual de php pdo y lo mirare a ver q encuetro si lo arreglo comento.
Como podría hacer para ejecutar multiples consultas en una sola pagina php
Hola Juan , quiero felicitarte por tu constante asistencia a quienes se estan formando en este lenguaje de programacion y tu tiempo dedicado. Queria hacerte una consulta, como se podria hacer en php, un sitio en el que cada dueno de comercio, al momento de registrarse tenga su propia cuenta de usuario, y en la cual pueda ir ingresando eventos con fechas para que cada usuario que se registra pueda, registrarse a ese evento. La duda es que cada comercio, debera tener su propia cuenta, y como ese comercio puede crear su cuenta conectada la base de datos, deberia utillizar colecciones ? Para que en cada coleccion cuando se registre ese usuario se vaya creando una tabla en la base de datos distinta. Puede ser una solucion esto ?
Hola, veo que en la linea
$sql="SELECT Sección, NombreArtículo, Precio, PaísOrigen FROM productos WHERE NombreArtículo=?";
no podemos usar LIKE y el símbolo % por lo que si en la BBDD tuvieramos 'destornillador plano' no lo encontraría. ¿Alguien sabe como podemos hacerlo para que la búsqueda sea más abierta y poder encontrar registros introduciendo información incompleta? Gracias.
Juan, no podemos dejar de alabar tu trabajo. No tienes nadie que pueda equipararse. Por cierto, me empieza a interesar "Scala" por si lo tienes en mente. Gracias de nuevo
Maravilloso
Creo que en vez de poner todos los nombres, es mejor un forEach, lo digo porque mi tabla tenia 7 registros y no quería ponerlos todos jaja. Saludos.
foreach ($registro as $key => $value) {
echo "$key: $value ";
}
echo "";
mil gracias
Hola Juan, agradecido por el curso en general. Me gustaría que me explicaras como apareció la línea 18 del código pues por más que la busco yo no la encuentro en vídeos anteriores. Tendrías la amabilidad de dedicarla unos segundos en tu próximo vídeo ? Gracias
+CARLOS RODRIGUEZ Si la linea: $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); no aparece en videos anteriores...
+CARLOS RODRIGUEZ Hola !! Tienes razón. Es una línea de código que debí haber explicado en el vídeo anterior pero se me pasó. Lo mencionaré y explicaré en el próximo vídeo. Perdón por el fallo. Un saludo
Esto ahorra el tener que escribir tanto en el while:
while ($registro=$resultado->fetch(PDO::FETCH_ASSOC)) {
var_dump($registro);
echo "";
}
Disculpe, si tuviera una pagina sobre comidas. y tuviera un input text de buscador, se tendría que hacer las mismas funciones del video como para que cuando el usuario quiera buscar algo(ejm una comida), la encuentre verdad?.
muchísimas gracias! como hago una consulta para arrojar datos que se encuentran en distintas tablas (tablas relacionadas) en la base de datos?
Para los carácteres especiales ya no es factible setAttribute() les saldrá error. tienen que modificar esta linea:
$base=new PDO('mysql:host=localhost; dbname=pruebas', 'root', ' ');
por está:
$base=new PDO('mysql:host=localhost; dbname=pruebas', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
hola Juan, una dudilla.....¿es posible usar caracteres comodín % en consultas preparadas?...gracias
iba a preguntar lo miso :/ pudiste?
Como hago para hacer la búsqueda inteligente que ya se hizo en el curso usando el "%%" y a su vez con el carácter comodín "?".
.
.
Gracias!
Hola, ejecuté el programa y me marcó errores. Se corrigió cuando escribí los nombres de los campos en Mayúsculas.
Por si a alguien le pasa.
En la sentencia SQL hay que poner "SELECT........FROM pruebas.productos...
Para indicarle que productos pertenece a la base de datos pruebas o puede dar error de lo contrario
Es buena costumbre indicarlo. No obstante si estás trabajando en MySql y seleccionaste previamente la BBDD antes de abrir el panel de SQL, puedes omitir indicar la BBDD. Un saludo!!
Hola Juan, como siempre agradezco el gran esfuerzo por tu parte que haces en esta Canal y la horas que invierte en explicar estos Tutoriales que no es cosa fácil y tu lo haces que parezca fácil jajajajaja. Una consulta o pregunta: No se si no lo he visto en algún vídeo o me lo he saltado pero ando tratando de buscar la forma de obtener en un Array los campos de una tabla, es decir.... Tengo una tabla que se llama Frutas con 4 campos, (Tipo,Peso,Precio,Origen) pues la idea es obtener los campos y guardar esos 4 campos en un Array para luego imprimir en el Explorador, siempre obtenemos el registro de los campos, pero quiero saber si se pueden obtener los Campos.. Bueno muchas gracias y a pasar un buen día
Bueno si alguien le interesa aquí encontré la solución:
$consulta ="SELECT * FROM $nombre_tabla";
$examinar = mysqli_query($conexion, $consulta);
$infoCampos= mysqli_fetch_fields($examinar);
foreach ($infoCampos as $infoCampo) {
echo"$infoCampo->name";
}
Hola. Una consulta, por qué utiliza exec("SET CHARACTER SET utf8") en lugar de set_charset("utf8")? gracias
Depende de si estás utilizando a la hora de programar en PHP un estilo orientado a procedimientos o un estilo orientado a objetos. Hablo de esto en el curso. Un saludo!!
Entiendo que utiliza exec("SET CHARACTER SET utf8") para anexar o definir el tipo de caracteres al objeto de conexión $base que ya se creo en primera instancia, como dice el profesor es cuestión del procedimiento que estas utilizando, incluso puedes definir la codificación de caracteres dentro del objeto $base, por ejemplo . $base = new PDO('mysql:host=localhost;dbname=pruebas;charset=utf8','usuario','contraseña');
En el caso de destorinillador, no se por que me sale solamente uno, como que no recorre el array
Hola Juan, gracias por el video pero quisiera hacerte una consulta.
En el caso de que ingresen un nombre de articulo que no existe en la tabla el execute() se ejecutaría de todas formas devolviendo true al condicional.
Entonces mi pregunta es como valido que el SELECT me devuelva algún valor?
Te dejo mi codigo por si no se entiende a lo que me refiero:
try{
$con = new PDO("mysql:host=$host;dbname=$database", $user, $password);
$sql="SELECT * FROM users WHERE id = ?";
$sqlprep = $con->prepare($sql);
$ar_val = array($_REQUEST['updateID']);
if($sqlprep->execute($ar_val)){
while($row=$sqlprep->fetch()){
echo "ID: ".$row['id']."";
echo "Name: ".$row['name']."";
echo "Pass:".$row['pass']."";
echo "Email:".$row['email']."";
echo "";
$name = $row['name'];
$pass = $row['pass'];
$email = $row['email'];
}
}//aca quisiera un else cuando no se encuentra el ID ingresado.
}
Desde ya muchas gracias!
Hola profesor, con esta forma de trabajar PDO, me pueden seguir haciendo inyeccion SQL? ' or ' 1' ='1 ??
Si es que sí se puede, lo vamos a solucionar en los próximos videos?
Y si no se puede hacer esa inyeccion sql, por qué no puede o mejor dicho que hace que esa inyeccion no funcione. Graaacias!!1
Hola Juan... primero felicitarte y agradecerte por el curso eres el mejor profesor de la web en verdad que he aprendido mucho... Juan puede sonar muy tonta la pregunta pero cuando utilizas el objeto $resultado en la linea 26 se supone que el objeto viene cargado con el recordset de la linea 24? lo pregunto por que en la linea 24 no hubo asignación de variable y me pregunto donde pudo haber almacenado el recordset, lo que entiendo es que $resultado->execute(array("Destornillador")) solo ejecuta el metodo pero no veo donde lo guarda a diferencia de la linea 26 que utilizas $registro para ir almacenando la operación del bucle. Te agradezco la respuesta y me perdonas si tengo algún vacío conceptual. Muchas gracias.
Hola !! Tú duda es de lo más razonable así que no te preocupes por preguntar cosas "lógicas". La función execute se encarga de ejecutar la sentencia preparada. Es decir, tenemos una sentencia sql ya almacenada (y este es el quid de tu pregunta) en la variable resultado. Pero no vale son con tenerla almacenada, sino que hay que ejecutarla también y de eso se encarga execute. Este método execute es booleano, es decir, solo devuelve true o false. True si la ejecución ha tenido éxito y false si no lo ha tenido. Resumiendo, una consulta preparada necesita dos pasos: 1. almacenarse y 2. ejecutarse. Por ese orden. Espero haber aclarado algo. Mira este enlace: php.net/manual/es/pdostatement.execute.php
Un saludo!!
Gracias Juan... Excelente respuesta, me quedó totalmente claro. Gracias por tomarte el tiempo para responder. Pocos profesores hacen eso. Bendiciones.
También en el while se puede usar como:
$resultados=$base->prepare($consulta);
if ($resultados->execute(array($_GET['buscar'])))
{
while ($row = $resultados->fetch())
{
print_r($row);
}
}
Excelente contenido pildorasinformaticas. Tengo una duda, como puedo devolver el numero de filas afectadas por un SELECT aplicando PDO con el objetivo de vlaidar si ya existe ese registro antes de realizar el INSERT
hola Ronny el metodo para el numero de columnas es rowCount(), en ocasiones funciona para SELECT, te recomiendo consulta PDO php, e ir practicando los metodos de la clase PDO, solo asi se va aprendiendo
te dejo parte del codigo:
$resultado->execute();
if ($resultado->rowCount() >0) {
echo "registros de la base de datos ";
@@joseangelacosta3776 muy amable por la información lo eh probado ya y me funciono muy bien. gracias por el dato
Pregunta. ¿La forma de trabajo Try-Catch es recomendable solo al utilizar PDO o se puede usar con la API MySqli? Y si se puede o se debe usar con las demás ¿cuál sería la forma adecuada? Gracias.
Puedes utilizarlo con PDO o con MySqli. Adecuadas son todas las formas. Digamos que lo más elegante sería utilizar POO (con o sin PDO). Un saludo!!
pildorasinformaticas Gracias, saludos.
Es posible trabajar con procedimientos almacenados en php, lo ideal sería con sql server ???
Se puede trabajar perfectamente con procedimientos almacenados con PHP y MySql. también son SQL Server. En mi curso de SQL explico cómo trabajar con procedimientos almacenados en MySql. Un saludo!!
¡Gracias!.
hola profe perdone si hago este comentario demasiado tarde, resulta que estudiado visual studio. net a 3 capas, es decir capa variables, capa datos y capa vista y ahora estudiado PHP no se si se puede escribir un procedimiento almacenado en mysql y llevar directamente en PHP, porque no me sale.
Porque lo que hace usted es escribir la sentencia sql dentro de PHP.
Y lo que quiero saber es que si se puede escribir una consulta en procedimineto almacenado en sql y llevar el nombre del procedimiento en PHP.
En internet no he visto ningun ejemplo al respecto, pero si es posible, quisiera su orientacion a modo de ejemplo.
Olá, tudo bem?
Tenho acompanhado seus videos e aprendido muito, só que agora me deparei com o seguinte problema:
#TimeMemoryFunctionLocation 10.0000379376{main}
Você tem ideia de como resolver isso.? Desde já agradeço.
Olá. Porque não é o que este erro é devido. Mas se você consultar no Google você pode encontrar uma solução:
stackoverflow.com/questions/23020121/stack-overflow-call-stack-timememoryfunctionlocation-10-0000143728
stackoverflow.com/questions/25126027/notice-undefined-index-call-stack-timememoryfunctionlocation
Hola Juan, muchas gracias por las explicaciones =)
Tengo un problema con el Charset.
He escrito $conexion->exec("SET CHARACTER SET utf8");
He creado una sentencia SQL para insertar en la tabla un registro con carácteres latinos. Concretamente: "Hóla"
Todo correcto.
Ahora bien, si escribo un: echo "Hola"; , la pantalla me imprime "Hóla"
Es un poco frustrante =(
¿Alguna ayudita? =)
Gracias, un abrazo!
+Noticiario Positivo Hola !! pon la siguiente etiqueta meta:
Debería de codificar todos los caracteres latinos. Un saludo
Funciona.
Gracias de nuevo. Mucho ánimo con tu labor docente!
Que vaya bien.
PERU PRESENTE
Hola Que tal Tengo una duda si al momento de generar la consulta $sql= "SELECT * FROM clientes WHERE Nombre = ?"; quiero usar un LIKE o INNER JOIN. como lo haces? Ya lo intente y no lo acepta. Gracias y un saludo explicas muy bien
Hola, gracias por los tutos
Tengo una duda, para hacer una consulta, se puede aportar el script de la conexion de la BB.DD a traves de require 'conexion_bd'; por ejemplo sin volver a copiar todas las líneas ?
Hola no se si mi repuesta te ayude, yo hice mi archivo externo de conexion.php y lo llamo con require_once la conexion se finaliza luego de ejecutar la consulta y no en el archivo externo.
ja ja... me pasa lo mismo. Vengo de C# y aaayyy mi Dios, como me cuesta esta Sintaxis que me parece tan desordenada pero pues bueno... aquí vamos.
Hola Juan ante todo muchisimas gracias por tu trabajo, tengo una duda, me apreció una error haciendo referencia a la linea 12 de tu código cuando declaras $busqueda=$_GET["buscar"]; me da este error Notice: Undefined index: buscar in ..... on line 12, muchas gracias por todos tus cursos y felices fiestas.
+Kaneda Kazama Hola !! Según el error, en tu formulario el campo de procedencia del dato no se llama "buscar" sino que debe tener otro nombre. Revisa el nombre del campo del formulario. Si no fuera este el motivo, copia y pega por aquí todo tu código para que pueda localizar el error. Un saludo
+pildorasinformaticas
Videos 53, 54
table{
width:300px;
margin: auto;
background-color: #FFC;
border: 5px;
}
td{
text-align: center;
}
+Kaneda Kazama Muchas gracias por tu respuesta, te dejo el código, muchas gracias y un saludo.
Necesito también el HTML. tengo que ver cómo se llama el campo de tu formulario. Un saludo
+pildorasinformaticas Como me señalastes que podia haber un error en el name del formulario lo revisé y por eso no lo te lo pasé fallo mio, te lo dejo en el siguiente mensaje, muchas gracias y un saludo.
Ayuda
Parse error: syntax error, unexpected 'while' (T_WHILE) in C:\xampp\htdocs\login\busqueda.php on line 46
no entiendo el error, lo hice tal y como el video, esta obsoleto algo en el bucle
Copia y pega por aquí todo tu código para comprobar que no tienes ningún error de sintaxis que no ves. Un saludo!
lo resolví un minuto después que comente, un error tonto en el bucle. GRACIAS
Buenos días Prof. desde Venezuela, he seguido este curso desde el principio y me ha parecido demaciado educativo inclusive para mi que nunca habia echo o estudiado nada que tenga que ver con Programación. Ahorita tengo un problema y lo más seguro que es de mi parte pero no logro dar con el problema, una vez que pruebo el ejercicio del presente video me arroja el siguiente error: Error no detectado: No se puede usar el objeto de tipo PDOStatement como matriz en C: \ xampp \ htdocs \ CursoPHP3 \ pagina_busqueda_pdo.php: 31 Seguimiento de pila: # 0 {main} lanzado en C: \ xampp \ htdocs \ CursoPHP3 \ pagina_busqueda_pdo. php en la línea 31. Le agradezco si me puede orientar a ver si logro encontrar mi error, gracias por su pronta respuesta
hola, quizás sea tarde, puedes poner que tienes en la linea 31?
hasta donde se ve dice algo de php 3, si esa es tu version de php entonces de la version 5 en adelante ya funciona el pdo
Hola Juan, una pregunta con respecto a los caracteres comodín que vimos en videos pasados!
Se puede usar caracteres comodín (% _)en una consulta preparadas?
me surgió la duda al hacer el ejercicio del video!.
PD. gracias por los cursos que nos ofreces, son muy buenos y de gran utilidad para aprender bien las cosas
Saludos!
no en una prepared,son anti-inyeccionSQL, aunque ya lo sabrás! Un saludo
Hola
Profesor Juan
Aca ando por mientras sube mas videos de java, y me di cuenta que no todos los criterios de busqueda funcionan, si pones otro nombre como por ejemplo llave no sale nada al igual que raqueta, cenicero y varias mas que no muestra resultado alguno, todas las que pones en el video si las muestra, pero varias no, no se a que se deba esto, no se si alguien le paso lo mismo
Saludos
PD
estupendos videos
Tendría que revisar el vídeo para recordar de qué hablaba en él y cuál era el código. pero lo que me comentas me resulta extraño. ¿Están esos artículos en tu tabla? ¿No los habrás eliminado anteriormente con alguna consulta de eliminación?
es el mismo codigo, la misma base que usted tiene, me dan los mismos resultados de este video, pero cuando pongo otro criterio por ejemplo mancuernas no arroja nada, como si no existiera esa palabra en el campo y lo estoy viendo en la base de datos, y en base de nombrearticulo pongo la busqueda y nomas los que usted menciona si funcionan
Hola, saludos desde Costa Rica, tengo problemas al tratar de incluir la conexion en el archivo de consulta, me da error.
Muchas gracias por los cursos, vengo desde el primero de php.... Son adictivos ;-).
Gracias por el comentario. Si quieres que te ayude con tu problema, copia y pega por aquí tu código. Un saludo!!
Profe muchas gracias por estos vídeos me han servido mucho, quería hacer una consulta ¿es posible usar caracteres comodín % o _ en consultas preparadas?
Saludos.
Se debe usar LIKE en la consulta $sql, en lugar del y la variable que reemplazara el comodin ?, la organizas para que quede de la siguiente manera
$NomArticulo=$_GET["buscar"];
$NomArticulo='%'.$NomArticulo.'%';
buena noche tengo un error ERROR DE CONEXION could not find driver y ya configure el php. ini con el PDO que puede ser?
Una duda que tengo, Juan.
En este video veo que, en la línea 16, aparece una línea de código que no aparece en el anterior video. No sé si es que hubo un corte o algo por el estilo.
Un saludo.
P.D: Vale, Juan. Veo que dos videos más adelante explicas precisamente esto de lo que hablo. Perdona que te haya dado el coñazo como el resto de los que te han preguntado. Lo dejo aquí editado por si alguien más se pregunta para qué sirve esa línea y se/te ahorre las molestias.
Un saludo otra vez.
+Nihil ¿Qué línea es? Creo que alguien me comentó algo por el estilo pero se explicó más adelante. No se si será la misma línea. Un saludo
Sí, sí, no te preocupes. Se trata de algo que luego explicas (un par de videos más adelante). He editado mi mensaje comentándolo por si alguien más se despista con esa línea.
Un saludo.
Muy buen curso, el único lió que tiene el curso es que uno es bruto por ratos y coloca caracteres que no debe para terminar peliando con uno mismo LOL
Jajjajajajaj
Porque aquí si pongo las posiciones [0],[1], Etc...me marca error n el vídeo 51 sale bien
No se si alguien lo colocó antes, pero ese sería el codigo para usar %.
$sql="SELECT NOMBREARTICULO, SECCION, PRECIO, PAISDEORIGEN FROM PRODUCTOS WHERE NOMBREARTICULO like ?";
$resultado=$base->prepare($sql);
$resultado->execute(array("%$busqueda%"));
No funciona eso amigo
Olá, obrigado pela sua atenção. O erro é esse:
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens.
Só que a quantidade de parâmetro está igual a do banco de dados, com exceção da chave primária os outros campos são varchar. Não consigo entender. Se puder ajudar agradeço.
Y SINO APARECEN LOS REGISTROS QUE???
Rezar los santos que conozcas
si profe me refiero que devuelva un por ejemplo: USUARIO NO ENCONTRADO!!! CON PDO como se hace, ya se como se hace con POO Y MSQL aqui lo aprendi, pero no con PDO
Dejo un pequeño aporte, si declaramos luego de ejecutar el objeto PDOStatement un count, y cerramos el bucle while, podemos evaluar si el producto existe o no.
$resultado->execute(array($busqueda));
$count=$resultado->rowCount();
//ahora hay que imprimir el objeto PDOStatement
if($count>0){
while($registro=$resultado->fetch(PDO::FETCH_ASSOC)){
echo "Nombre: $registro[NOMBREARTICULO] Seccion: $registro[SECCION] Precio: $registro[PRECIO] Pais: $registro[PAISDEORIGEN]";
echo "";}
}
else{
echo "No existe el producto";
}
Hola he probado esto y funciona para un articulo cuyo nombre sea simple Pantalón, destornillador, etc. Pero ¿como busco un articulo que necesite el operador % por ejemplo Pantalón si suponemos que en mi BBDD tengo varios (por ejemplo pantalón de pana y pantalón vaquero)?
Me respondo a mismo, consulte la pagina de PHP.net y lo encontré :
los marcadores de posición deben emplearse en el lugar del valor completo
$sentencia->execute(array("%$_GET[name]%"));
Perfecto aporte. Esto me lo han preguntado muchas veces. Un saludo!!
Hola una observación, el método "exec" del objeto PDO ejecuta una consulta SQL a la BBDD, y devuelve el número de filas afectadas, así está descrito en el estándar. Lo que usted está poniendo como argumento de "exec" es una consulta SQL para establecer el juego de caracteres por defecto a utilizar en la BBDD. Yo sé que esto usted ya lo sabe pero lo digo para los que apenas comienzan y no noten esta diferencia. O sea está bien lo que hizo pero le faltó decir esta observación. Por otro lado, también le faltó recalcar que el objeto PDOStatement no es exactamente un "resulset" (tabla virtual), en principio es una consulta preparada, pero después de ser ejecutada se convierte a "resulset", es decir, ya representa la tabla virtual (conjunto de resultados), y también así lo dice en el estándar.
hola ajajajaj, aca andamos tambien
@@danielhernandez5401 jajajajajajajajjajaja vamos de nuevo !!!
Hola Profe tengo un problema con mi código al usar el comando finally tengo erro de sintaxis pero no me deja ejecutar el codigo
SCREAM: Error suppression ignored for
( ! ) Parse error: syntax error, unexpected '{' in C:\wamp\www\Curso_php\PDO\Conexion_PDO.php on line 41
Profe me podria ayudar a entender...
Profe si elimino l comando finally se me quita el error y puedo ejecutar el código en su totalidad.
Gracias
En la línea $sql="SELECT Sección, NombreArtículo, Precio, PaísOrigen FROM productos WHERE NombreArtículo=?";
donde está la interrogación, no podemos poner la variable $busqueda como en las prácticas anteriores? porqué es la interrogación?
Hola !! El sentido de la interrogación es crear consultas con parámetros para, entre otras cosas, evitar la inyección SQL.
Un saludo!!
@Anaid Bracho, tal como lo dice el profe el final de poner =? sirve para evitar la inyeccion sql, esto es, evitar el funcionamiento de 'or '1'='1
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'pruebas.productos' doesn't exist
Me sale este error y no entiendo por qué, ya que comprobando la BBDD 'pruebas', la tabla 'productos' existe.
Tio pildoras tengo un problema, estoy usando eclipse (con vista PHP desde luego) para programar en PHP y me sale un error:
Error :SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?CULO,SECCI?N,PRECIO,PA?SDEORIGEN FROM PRODUCTOS WHERE NOMBREART?CULO='TUBOS'' at line 1
Pero cuando lo ejecuto con otro editor de texto si funciona, por que sera?
Parece ser que es un problema de acentos. Mira a ver si Eclipse soporta UTF-8. Un saludo
Asi es, al no soportar acentos se cae la consulta
quita acentos de tablas y BBDD. Yo los tengo pero no es buena práctica que los nombres de tablas y campos de una BBDD lleven acentos. Un saludo!!
Cierto, esos acentos aveces son un dolor de cabeza, Gracias por responder!
Mire teacher cree tres archivos uno llamado conexion otro pagina_busqueda_pdo y el último formulario_busqueda_pdo
en conexion eliminé finally porque me daba error, agrege el $conexion = null que es para vaciar los datos o mejor dicho cerrar la conexion en el segundo archivo llamado pagina. la pregunta es esta bien o es buena practica agregar o cerrar la conexión en ese archivo y no en el archivo de conexion, saludes y aqui aprendiendo demaciado muchas gracias.
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
Formulario Busqueda
Mostrar Articulo:
Nombre Articulo
No me funciona este código y en el finally me marca un error dreamweaver. El código del video anterior tampoco me funciono
Me sale este error
( ! ) Parse error: syntax error, unexpected '{' in C:\wamp\www\CursoPHP\pag_busq_pdo.php on line 38
y si quito el finally
( ! ) Fatal error: Call to undefined function setAttribute() in C:\wamp\www\CursoPHP\pag_busq_pdo.php on line 16 (He marcado la linea 16 en el código)
Gracias de antemano si alguien ve donde puede estar el error o errores qu e tenga.
No te fíes del error del dreamweaver en el finally. A mi también me marca error en ocasiones y me funciona.
esta muy bueno utilizando PDO, es menos codigo!
hola profe te voy a dejar un codiguito no se por que me da el error ya busque en sant google.
es sencillo el error es el siguiente me da un problema con el nombre del host lo tengo en hostinger gratuito.
hasta ahora he utilizado el mimo localhost ya que cuelgo el archivo php donde esta el servidor.
mire en stackoverflow
y una solucion es meter la ip y el puerto. pero lo hice y no me funciono .
hasta ahora con mysqli y mysql me estaba funcionando ese nombre a ver si pudieras orientarme hacia donde buscar.
error:SQLSTATE[HY000] [2005] Unknow MySQL server host ' $dbhost '(-2)
este es el error
mi variable $dbhost = "localhost";
gracias de antemano y cuando pueda un saludo .
+DANIEL URBANO DE LA RUA Hola !! Debes mirar en tu panel de control de hostinger cuál es el nombre de host de la BBDD. Localhost es el nombre del host de las BBDD en local, es decir, en tu propio PC. pero cuando trabajas en "real" el nombre del host nunca será localhost. Cada hosting tiene el suyo. Una vez pongas el nombre correcto no debería haber problemas. Un saludo
Gracias lo mirare en un raton gracias no podia dejar de pensar jiji gracias seguro los reyes te traen algo bueno esperó la pase bien. por su horario deduzco que viene de vuelta de la cavalgata de revés. Jiji
+DANIEL URBANO DE LA RUA trata colocando 127.0.0.1 y no localhost si y solo si tienes el server en tu PC.
Aveces funciona.
+Dionisio Barboza gracias por responder un saludo caballero. y gracias por molestarte en responder el mundo lo mueve gente asi. ;)
Perdon me refiero al video anterior, sorry
Hola si quieren agrandar el código aqui dejo esta condicional que ayuda avisarte si existe o no lo que intentas buscar (filas afectadas por el query). asi evitamos la pantalla blanco sin resultados. System.out.println("Adiós.");
$cuenta=$resultado->rowCount();
if($cuenta==0){
echo "No se encontrado registros referente a ".$busqueda;
}
Antes que nada muy buena su explicación, pero me aparece el siguiente error:
Fatal error: Uncaught Error: Call to a member function prepare() on string in C:\xampp\htdocs\Projects\PDO CONSULTS.php:19 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Projects\PDO CONSULTS.php on line 19.
adjunto aqui el codigo de antemano, gracias por sus respuestas.
donde me marca el error es en $resultado=$base->prepare($sql);
alguien me puede ayudar con este error
SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected
yo tenia ese mismo error, y fue por una "," . Que estaba entre el dbname y el port, lo sustituí por un ";"y funciono.
(este era el que no funcionaba)
$base = new PDO('mysql:host=localhost; dbname=pruebas,port=3308','root', '');
(y este funciona)
$base = new PDO('mysql:host=localhost; dbname=pruebas;port=3308','root', '');
Ing. admiro tu trabajo y te he ddado en todos lo que he visto un like, pero en comparacion de los anteriores este quedo muy ambiguo y con algunos errores, creo seria bueno hacer otro. Saludos
Hola a todos quisiera saber si alguien puede darme una mano ya que eh seguido los pasos del video y me arroja el siguiente error Error: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected, viendo la forma de encontrar donde estaba la falla comenté la parte del codigo donde va la funcion $resultado->execute(array($buscar)); y resulta ser que esa porcion de codigo es la que me genera el error, comparando el codigo en mi editor de codigo con el del video ambos son iguales asi que no se porque ocurre esto. Si alguien puede ayudarme se los voy a agradecer.
¿Podria alguien resolverme esta duda?. Todo funciona correctamente hasta que me conecto con el formulario. lo he hecho todo igual que el video, pero no me funciona. me da el siguiente error. "Notice: Undefined index: buscar in C:\wamp64\www\curso_php\pagina_busqueda_pdo.php on line 11", este es el contenido de la linea que me señala:
$busqueda=$_GET["buscar"];
No encuentro el error porque lo he hecho todo igual que el video. cuando establezco un valor fijo funciona correctamente. El error me da cuando quiero cambiar el valor fijo por la variable $busqueda. Alguna idea de donde puede estar el error.
Es muy elemental pero ¿no tendrás equivocado el nombre para llamar desde el formulario a este archivo?. Como no nos pones los dos es por adivinar...
Me es imposible memorizar tantas funciones :(
A mi también. No se trata de memorizar, sino de entender. Para buscar una función que no recuerdes utiliza google, la mejor herramienta del programador. Un saludo!!
Yo enumero los ficheros y los comento. Cuando se me olvide una función vuelvo a los ficheros y listo.
Hola profe, eh estado buscando el problema pero no se que pasa, hice todo el codigo tal cual el video y me sale el siguiente error: Error: SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected, si comento la linea esta: $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
No me sale error pero tampoco me sale ningun resultado de la base de datos, le dejo mi codigo para ver si usted le encuentra el error:
Gracias : )
"mysql:host = localhost; dbname = prueba" esta parte del código tiene que ir sin espacios, espero te sirva
@@enlamira2177 Muchas gracias por la aportación, me estaba volviendo loco y no encontraba el fallo. Me lo has resuelto
Fatal error: Uncaught Error: Call to a member function prepare() on string in C:\xampp\htdocs\dashboard\prueba\config\conectpdo.php:10 Stack trace: #0 {main} thrown in C:\xampp\htdocs\dashboard\prueba\config\conectpdo.php on line 10.
no he podido solucionar este error
como lo resolviste?
Gran vídeo pero quería comentarte que el método del objeto dentro de catch es : e.getMessage()
Referencia :
php.net/manual/es/exception.getmessage.php
¿Dije lo contrario? Ya no recuerdo...
No , si lo dijiste bien pero en el código lo pusiste en mayúscula - GetMessage() , de todas formas , te lo ejecuta , solo quería comentártelo.
Tu comentario no aporta nada , se puede escribir de 2 formas , no comentes si no es para ayudar
Alguien me podria ayudar, no me funciona, he buscado y no veo ningun error!
Aqui esta mi codigo:
Hola, tengo un problema con el código, quizá ya sea Juan o alguno de ustedes puedan darme una mano, resulta que el fetch no me devuelve nada y no logro localizar el error (que no me figura que tenga ninguno!) probe usando bindParam() y bindValue() pero no lo resolvio, cambie el codigo sql y los parametros en execute, probe usando ?, :esto, LIKE, =, quitando el codigo html para manejar todo con una unica pagina php.. pero no me funciona. Quiza algún iluminado vea lo que yo no jaja.
Este es el codigo:
(ignoro el html porque es el mismo que use ya mil veces y funciona, igual al del video, el nombre del input text es "buscar")
$busqueda=$_GET["buscar"];
try{
$base= new PDO("mysql:host=localhost; name=curso_sql", "root", "");
$base->exec("SET CHARACTER SET utf8");
$sql="SELECT CÓDIGOARTÍCULO, NOMBREARTÍCULO, SECCIÓN, PRECIO, PAÍSDEORIGEN FROM PRODUCTOS WHERE PAÍSDEORIGEN = ?";
$resultado=$base->prepare($sql);
$resultado->execute(array($busqueda));
//-echos con codigo HTML totalmente ignorables delante:
echo "
POR QUE NO QUIERES FUNCIONAR? ";
echo '
Codigo
Articulo
Seccion
Precio
Origen
';
echo "";
while($fila=$resultado->fetch(PDO::FETCH_ASSOC)){
echo "";
echo $fila['CÓDIGOARTÍCULO'] . " ";
echo $fila['NOMBREARTÍCULO'] . " ";
echo $fila['SECCIÓN'] . " ";
echo "$ " . $fila['PRECIO'] . " ";
echo $fila['PAÍSDEORIGEN'] . " ";
}
echo "";
$resultado->closeCursor();
}
catch(Exception $e){
die('Error: ' . $e->GetMessage());
}
finally{
$conexion=NULL;
}
Ayuda, me voy a volver loco jaja
Lo resolvi finalmente! Al entender en el video 55 como funcionaba la línea $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
pude encontrar cuál era realmente el problema, y es que por algun motivo el codigo "no entendia" que base de datos estaba usando, cambie dentro del codigo SQL "PRODUCTOS" por "CURSO_SQL.PRODUCTOS" y al fin funciona!
Por si a alguien le pasa lo mismo, ahi la solucion!
Solucion fase 2:
El problema estaba en la linea $base= new PDO("mysql:host=localhost; name=curso_sql", "root", "");
no es name, es dbname: $base= new PDO("mysql:host=localhost; dbname=curso_sql", "root", "");
ya con eso no es necesario aclarar en la sentencia SQL, sucede que no estaba definida la base de datos
@@TheSensei88 muchas gracias a mi me ha pasado y llevaba un rato dando vueltas y al leer tu comentario he visto la luz, he de poner el nombre de la bbdd antes del nombre de la tabla, gracias otra vez
hola, alguien sabria decirme porque me imprime la pantalla en blanco y sin mensajes de error, os dejo el codigo, gracias:
Prueba a Poner un Like (no un igual) en la consulta :
$sql="SELECT * FROM articulos WHERE nombre LIKE ?";
Los campos de tipo texto se comparan con LIKE a mi no me funcionaba con =.
ah y en la asignacion de la variable que usas como criterio haz :
$busqueda="%" . $_GET["buscar"] . "%";
y ya esta
Como lo resolviste me sucede igual amigo?
we :,v, no mamen, v:, ya me acostumbré al otro procedimiento ..