Que tal buen día Profesor, a pesar de que ya tenía conocimientos previos en PHP, este curso resulta excelente tanto para principiantes como persona ya esxpertas en la materia, muchas felicidades y éxito sin duda el mejor curso que he encontad. Saludos desde la Ciudad de México
Especificación del tipo de caracteres mysqli_stmt_bind_param($resultado,"caracterDescripcion",$pais); Carácter Descripción i la variable correspondiente es de tipo entero d la variable correspondiente es de tipo double s la variable correspondiente es de tipo string b la variable correspondiente es un blob y se envía en paquetes
He tenido el gusto de seguir los cursos que expuso, PHP, JAVASCRIPT, SQL, y en principio debo felicitar su labor, su claridad, elocuencia y didactica que utiliza en cada una de sus ediciones....soy un desarrollador de la vieja escuela, con el reto de elaborar un sistema que me encomendaron utilizando esta tecnologia, y gracias a lo que vi en sus videos ese reto sera cumplido.... Seria interesante que tenga la gentileza de crear el curso de PDO, que complementaria definitivamente mi trabajo a realizar...... nuevamente felicidades por la labor realizada.
Hola, buenas noches. Antes que nada agradecerte Juan por tu tiempo y pedagogía. Quería realizar la siguiente consulta, o comentar el problema que estoy teniendo: Cuando realizo la consulta lo único que se imprime en pantalla es la frase :"Personas encontradas: " y, lo que imprimí en el WHILE, no lo hace. Revisé el código y se lo ve bien.
Juan excelente vídeo, es bueno aprender de seguridad en php para tener una página solida, una inquietud... me funcionó todo bien, ya al final en el while ejecuto la búsqueda pero solo me devuelve un valor con ese criterio y no todos los que hay. Saludos desde Colombia.
Hola!! Gracias por el comentario. Revisa bien que no falten acentos o símbolos de este tipo en el criterio que introduces en el formulario. Por ejemplo, yo en mi tabla tengo la sección ferretería (con acento) y alguno hay de ferreteria (sin acento). Si en el criterio lo pongo sin acento, solo saldrá el que está sin acentuar. No digo que este sea tu problema, pero es un fallo común cuando no salen todos los registros que esperamos. Si ves que siguen sin salirte todos los registros copia y pega por aquí todo tu código para que pueda localizar el posible error (si tengo tiempo). Un saludo
pues la verdad le he intentado y pues tal ves no encuentro el problema ya que mi criterio de búsqueda es: COLOMBIA donde tengo 6 artículos con ese país de origen y nada, te dejo el código aquí para que lo veas mejor Gracias! lh3.googleusercontent.com/-nzUdAioyGCs/V1hLqRLLmBI/AAAAAAAAB2E/HQPXfW1TccI9qjBMqQsmwTqylcwfOxOGQCCo/s800/Captura.PNG
Excelente el curso, muy bien explicado, felicitaciones. Tengo una consulta: como paso los parámetros a la función mysqli_stmt_bind_param si en la consulta SQL tengo mas de un criterio en la instrucción WHERE? Gracias
Que todo te esté yendo bien profe Juan. Ayúdame con una duda (de seguro sencilla) en el min. 15:42 aprox. utilizas : $ok = mysqli_stmt_bind_param($resultado, "s", $pais); y luego al ejecutar la consulta sobre escribes la variable $ok $ok = mysqli_stmt_execute($resultado); Mi duda es si es que yo en la primera instrucción solo ejecuto la función y el resultado no lo asigno a ninguna variable (en este caso la variable $ok), luego habría algún problema?
No me cansaré de darte las gracias Juan. Una pregunta, si la consulta en vez de un filtro tiene más de uno?? Es decir, que en WHERE haya un AND o un OR, ¿cómo se pone en prepare el ? ? y luego cómo se identifican correctamente en las otras funciones? Gracias y felices fiestas a todos!
+David Bernabé Gracias por tu comentario. Si me permites, lo veré más adelante en el curso. Haremos consultas preparadas con varios criterios. Un saludo
Saludos Profesor Juan, primero que nada lo felicito por su pedagogía a la hora de enseñar. Por otro lado, tengo un problema ya que no me funciona el codigo, para ser más especifico el problema lo tengo a la hora de ejecutar el query que al darle al botón de "buscar" del formulario, entra en la condicional if ($ok = "false") y muestra como mensaje "Error al ejecutar la consulta", ya verifiqué los campos de la base de datos y al parecer todo está bien. Aqui le dejo los campos de la base de datos: CODART SECCION NOMBREARTICULO PRECIO FECHA IMPORTADO PAISDEORIGEN y aquí le dejo mi codigo: Espero que me pueda ayudar profesor, porque ya no sé qué hacer.
+pildorasinformaticas Profesor juan, por favor le recuerdo revisar mi codigo porque no logro ver el error, para poder seguir con su curso y despejar mis dudas!
Buenas os pongo que tendria que ser en PHP 8 el Bucle, ya que tiene que ser con la función FETCH en el WHILE $sql="SELECT Nombre, Oficina, Codigo_de_Empresa FROM progress_excel_avanzado_2016_no WHERE Codigo_de_Empresa= ? "; $resultado=mysqli_prepare($conexion,$sql); $ok=mysqli_stmt_bind_param($resultado, "s", $c_emp); $ok=mysqli_stmt_execute($resultado); if($ok==false){ echo "Error al ejecutar la consulta"; }else{ $ok=mysqli_stmt_bind_result($resultado, $Nombre, $Oficina, $c_emp); echo "Artículos encontrados: ";
Increíble el curso super bien explicado, el código me funciona perfecto solo tengo una duda en este ejemplo en donde usaríamos el comodín '%' para que funcione como buscador?
Buenos días Juan. Quiero felicitarte por tus videos y el tiempo que le dedicas. Es muy loable compartir tus conocimientos y experiencias a personas que deseamos aprender de este mundo de la programación. Aprovecho para hacer una consulta: 1. ¿Faltó cerrar todo el código con mysqli_close($conexion)?, ¿o ya no es necesario?.
Hola !! Sí, lo correcto sería cerrar la conexión. De lo contrario queda abierta y estamos consumiendo recursos de más. En este programa no causa fallo pero es recomendable hacerlo. Bien visto !! Un saludo
Saludos profesor Juan, excelente curso sobre PHP, su forma de explicar es muy comprensiva, le comento que en ninguno de los vídeos anteriores me había generado error hasta el día de hoy en el vídeo #50, ya he revisado de arriba a abajo el código y no encuentro error, le explico, mi error esta ubicado en la parte del mysqli_prepare. He revisado sobre la acentuación y la consulta esta bien al igual que la conexión en codigos aparte, pero al incluirlos en mysqli_prepare($consulta,$sql) no me devuelve el mysqli_stmt me aparece el error Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\Curso_PHP\consultas_preparadas_inyeccion_2.php on line 33
hola Jhon, tu unico error es en la linea mysqli_set_charset($conexion, "utf-8"); lo unico que hay que hacer es "utf8", para que se muestren los caract como eñe o acentuacion, como lo tienes si buscas pais como españa, japón no te mostrara porque no hay coicidencia porque no toma los valores saludos
tuve el mismo problema. Lo pude solucionar poniéndo el nombre de cada campo a seleccionar dentro de comillas invertidas (` `). Quedaría así la consulta: $sql="SELECT `CODIGOARTICULO`, `SECCIÓN`, `PRECIO`, `PAÍSDEORIGEN` FROM PRODUCTOS WHERE PAÍSDEORIGEN=?";
Buenas tardes Juan, excelente video como siempre. Quería preguntar como se usarían los caracteres comodín % porque poniendo estos delante y detrás de la interrogación, usando y sin usar comillas, y obviamente usando siempre LIKE en lugar de =, da error en cualquiera de ellos. He estado buscando por la red y he visto algo que parecía que lo correcto es poniendo los caracteres también en la misma variable, es decir $pais= "%$_GET['buscar']%"; pero también me da error. Si está explicado en algún video posterior no pierdas tiempo en contestar este comentario porque llegaré a verlo más pronto que tarde ;). Un saludo y muchas gracias por tus tutoriales.
Que tal, antes que nada excelente video y curso, como se haria una consulta preparada dentro de otra??? estoy tratando de hacer eso pero no lo he conseguido
Hola Juan, tengo otra pregunta: 1. Si es que en la consulta SQL, en vez de haber puesto los 4 campos de la consulta, se hubiera puesto el asterisco: $sql="SELECT * FROM PRODUCTOS WHERE PAÍSDEORIGEN=?", para poder visualizar todos los campos de la BBDD. ¿Cómo se hubiera definido las variables en el procedimiento $ok=mysqli_stmt_bind_result($resultado, __,__,__)? Ya que en tu ejemplo habías creado 4 variables para poder enlazar con los 4 campos de la consulta.
Hola !! Pues exactamente igual. Tendrías que crear una variable por cada campo que tuviera la tabla. En el caso del vídeo son cuatro porque cuatro son los campos incluidos en la instrucción SQL. En caso de * crearíamos tantas variables como campos tenga la tabla. Un saludo!!
Saludos profesor hace poco tome este maravilloso curso el cual le agradezco de todo corazón, no solo por este sino también por todos los que dicta en su canal. E tenido un problema y es que no me da error, pero tampoco al darle al botón submit en el navegador no me carga nada, se queda en la misma pagina acá el código: Formulario:
hola Elvis tu error esta en form action"resultados te falta el signo de igual en action que debe llamar al archivo pho action="resultado..... solo es eso saludos
Hola Profesor, felicidades por tu trabajo que es espectacular. Mi duda es, ¿si se pueden usar las funciones mysqli_afected_rows o mysqli_num_rows, para enviar un mensaje si no se encuentran artículos. Yo lo conseguí con una variable incrementándola dentro del while (fetch) y con un if fuera del bucle, pero me parece poco serio. Un saludo.
Para quien desee hacerlo con tablas recordar poner esto en el table, tr, td { border: 1px solid gray; border-collapse: collapse; } td { padding: 5px; width: 30%; text-align: justify; } y esto donde el maestro puso la impresión es decir dentro del while() echo "$codigo"; echo "$seccion"; echo "$precio"; echo "$pais";
Me parece que el primer $ok debería ser un if para comprobar que no introducen inyecciones, si sale false, que salga un error, y si sale true, que se aplique el resto de código. ¿No? Gran vídeo, de todas formas. Un saludo F.
profe una pregunta que programa es el que usa para hacer las flehas o escribir o señalar y de antemano gracias por el curso muy bueno y una peticion que le queria pedir ps viendo mi comentario ve que ahora el php esta en la version 7 me gustaria que hiciera un pequeño curso enseñandonos lo nuevo que han implementado en esta version de php7 muchas gracias por este gran curso tenia un conocimiento previo en php algo basico y con usted he aprendido hartas cosas gracias otra vez
Una pregunta, que ventajas te aporta esta consulta preparada mediante estas funciones de SQL frente a simplemente tratar el dato recogido con PHP (hacerle un trim y un addslashes antes de meterlo en la query)? Ambas evitarían el SQL injection si no me equivoco
Saludos Juan, muy interesantes videos; he aprendido mucho, felicitaciones por el esfuerzo. ¿Qué programa usas para hacer los cuadros y las flechas con que señalas?
una consulta, la función mysqli_stmt_fetch() construye un array indexado o asociativo con las variables definidas en la funcion mysqli_stmt_bind_result() ??
hola juan disculpa que te moleste, en verdad creo que eres na figura, haces muy pero que muy bien tu trabajo, te felicito. por otra parte en este capituo he tenido un error que no encuentro la manera de como resolverlo, quisiera ver si puedes ayudarme, aqui te lo dejo: Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\Php MySQL Curso\cap49a.php on line 43 Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\Php MySQL Curso\cap49a.php on line 47 error en consulta
AQUI ESTE EL CODIGO COMPLETO. como te comentaba mi problema es que al darle clik al botón de de dale, la pagina luego se queda en blanco, no da error pero tampoco muestra nada, solo se queda en blanco y no se que sera le dado vueltas y vueltas y no se que hice mal :( Formulario_Busqueda_paises.php Documento sin titulo Introduce pais: ====================================================== resultados_paises.php Documento sin titulo
Que tal buenos días, cuando pongo la función "mysqli_stmt_bind_param", no se pone como función se queda como texto (no cambia de color), estoy usando dreamweaver cc 2017, como puedo solucionar esto agradeciendo su aporte.
Hola Profesor, primero que nada felicitaciones, es usted un excelente profesor. Muchas gracias estoy aprendiendo mucho de sus videos. Se que ya hace mucho que se publico este vídeo, pero me sale error al ejecutarlo y no logro distinguir el problema, quiero ver si me puede auxiliar. De antemano muchas gracias y saludos desde México. Error: Warning: mysqli_stmt_bind_result(): Number of bind variables doesn't match number of fields in prepared statement in C:\AppServ\www\ejemplos\3 esultado_paises.php on line 42 linea 42: $ok = mysqli_stmt_bind_result($resultado, $codigo, $seccion, $precio, $pais); código: $pais=$_GET["buscar"]; require("datos_conexion.php"); $conexion=mysqli_connect($db_host,$db_usuario,$db_contra); if (mysqli_connect_errno() ) { echo "Error de conexión a la Base de Datos"; exit(); } mysqli_select_db($conexion,$db_nombre) or die ("Error de usuario o contraseña"); mysqli_set_charset($conexion,"utf8"); $sql = "SELECT CODIGOARTICULO, SECCION, PRECIO PAISDEORIGEN FROM PRODUCTOS WHERE PAISDEORIGEN= ?"; $resultado = mysqli_prepare($conexion, $sql); $ok = mysqli_stmt_bind_param($resultado, "s", $pais); $ok = mysqli_stmt_execute($resultado); if ($ok==false){ echo "error al ejecutar la consulta"; }else{ $ok = mysqli_stmt_bind_result($resultado, $codigo, $seccion, $precio, $pais); echo "Articulos encontrados: "; while (mysqli_stmt_fetch($resultado)){ echo $codigo . "-" . $seccion . "-" . $precio . "-" . $pais . "" ; } mysqli_stmt_close($resultado); }
Hola, gracias por este curso tan instructivo! Tengo sin embargo una duda: cuando usas la funcion mysqli_stmt_bind_param() para unir los parametros de la sentencia sql dices que usa requiere 3 parametros: el objeto mysqli_stmt, el tipo de dato y la variable con con criterio. Pero, que pasa si hay dos o mas variables con criterio. Es decir si la consulta fuese: $sql="SELECT CODART, SECCION, PRECIO, PAISDEORIGEN FROM PRODUCTOS WHERE PAISDEORIGEN = 'ESPAÑA' and SECCION = 'JUGUETERIA'"; ¿Como se escribiría eso? ¿Asi? $sql="SELECT CODART, SECCION, PRECIO, PAISDEORIGEN FROM PRODUCTOS WHERE PAISDEORIGEN = ? and SECCION = ? "; Y en el raro caso que fuese asi esto ¿como seria la recepcion de estas variables en la mysqli_stmt_bind_param() ¿Algo asi? ¿recibiria 4 parametros en lugar de los 3 que apuntabas? $ok=mysqli_stmt_bind_param($resultado, "s", $pais, $seccion); Gracias de nuevo por tu curso! Lo voy siguiendo con mucha atención.
Gracias por el comentario. Creo recordar que más adelante en el curso se ve el código necesario que contempla esa posibilidad, es decir, una consulta preparada con más de un parámetro. Si sigues avanzando lo verás más adelante. Un saludo!!
hola esta bueno el video tengo un inconveniente antes con msqli usaba esto para que me diera cuando había resultado o no if($result->num_rows==0) pero con esto no logro que me de nada, como deberia ser
Profesor una pregunta veremos lo que es WEBSERVICES? estoy buscando trabajo como prácticante y ya en 3 ocaciones me han hecho esa pregunta acerca de WEBSERVICES.
Yo la duda que tengo,,,,ahora estoy aprendiendo contigo a realizar el código con procedimientos, luego se hará con poo, al final con que es mejor programar, con procedimientos o poo? , como java , C#, python , es como se debe programar ahora a poo?, cual es la linea a seguir?, eres la luz que sigo, orientame por favor. También estoy viendo tu curso de Java, es bueno que lo siga la vez que este o debería centrarme en este, por desgracia me sobra bastante tiempo, por eso hago los dos, y porque no tienes uno de Python que si no,,,,,jeje. Hay que centrarse en un sólo lenguaje de programación?, Me gustaría programar bien, con esfuerzo ya lo se, pero con un buen maestro como tù mejor.Tengo un cacao.. Un saludo
+francisco Javier andres gonzalez Hola !! Lo de hacer más de un curso a la vez depende de cada uno. Hay personas que se les da muy bien la programación y tienen una gran capacidad de asimilación. Sin embargo cuando se está aprendiendo, yo recomiendo ir de uno en uno. Primero un curso, luego otro etc Respecto a estilo por procedimientos o poo, recomiendo hacerlo por poo. Es más moderno, con código mas limpio y es la lñínea que siguen los lenguajes de programación modernos. En breve me pondré a programar estilo poo. Un saludo
Tengo una duda la inyección solo aplica cuando existe la clausula where, es decir si yo solo tengo mi consulta asi. "SELECT * FROM alumnos" no seria necesario hacer una consulta preparada O si.
Buenas, Profe excelente curso, quiero comentarle que tengo un problema y es que mi editor de texto "brackets" no reconoce la función mysqli_stmt_bind_param y no se cual sea la causa de ese problema, espero me ayude muchas gracias profe
Tal vez tengas un error de sintaxis cerca de la función. Copia y pega todo tu código por aquí para que yo u otra persona te podamos ayudar. Un saludo!!
pildorasinformaticas buenos días, ya me salio todo bien aunque el editor mostraba que no leía la función el servidor lo hizo correctamente y obtuve los resultados a la par con usted Profe, muchas gracias 😁
mismo problema tengo, me sale esto Fatal error: Uncaught Error: Call to undefined function msysqli_stmt_execute() in C:\xampp\htdocs\curso_php\Evitando Inyeccion\Evitando_inyeccion.php:29 Stack trace: #0 {main} thrown in C:\xampp\htdocs\curso_php\Evitando Inyeccion\Evitando_inyeccion.php on line 29 me podrian ayudar un favor
Como siempre gracias por tus videos, ayudan muchisimo. Tengo una duda, no se como ingresar la funcion mysqli_affected_rows que vimos en el video anterior. Ya que cuando la ingreso, por mas que exista el pais que estoy buscando en la base de datos, me dice "No se ha encontrado registro con ese pais". Le dejo el codigo si tiene tiempo para verlo.
Profe juan, excelente curso y vídeo! Al ejecutar la búsqueda, me sale el siguiente error: Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\Curso PHP\49resultados_pais.php on line 22 Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\Curso PHP\49resultados_pais.php on line 25 Leyendo la documentación de PHP, en php.net/manual/es/mysqli.prepare.php respecto al método mysqli_prepare(), se supone debe devolverme el objeto de la sentencia o FALSE si ocurre un error, no obstante, me esta devolviendo TRUE, por lo tanto la función mysqli_stmt_bind_param() me indica más tarde que debe recibir como parámetro un objeto de tipo mysqli_stmt, y no un boolean. ¿Alguien sabe por qué se debe éste error? Mi código es:
Hola !! Gracias por el comentario. He probado tu código y me funciona bien. Lo único que tienes diferente a mi, es la instrucción SQL. Asegúrate de que los campos los tienes sin acentuar en la BBDD. Lo demás es idéntico. Si una vez comprobados los campos en la BBDD te sigue sin funcionar, la verdad no sabría decirte de dónde viene el error. Un saludo!!
@@pildorasinformaticas A mi me paso tambien el error , y todo se debia a un " accento " o sea... en lugar de artículos =>>> tenia solo articulos. Por lo tanto solo queda que revises bien los acentos, sea enla base de datos o en tu codigo. PS: por esa razon, no es recomendable usar accentos y simbolos raros a la hora de programar! Saludos desde la costa tropical!!
profe una consulta por que en el bucle while no utiliza una variable como lo has hecho en otras consultas anteriores ejemplo while( $fila = mysqli_stmt_fetch($resultado)) si no lo hace directamente con la funcion ejemplo while( mysqli_stmt_fetch($resultado)) , es decir estos datos no se guardan en un array asociativo, o estoy perdido del tema ,profe me podria aclarar esa duda gracias
Hola profe una consulta despues de mysqli_stmt_close($resultado) habria que tambien cerrar la conexion de la base de datos con mysqli_close($conexion)?? Desde ya muchas gracias.
Buenas Prof. Juan soy nuevo y estoy siguiendo varios de sus cursos. Tengo un problema en esta clase al realizar la busqueda pertinente me muestra los resultados pero me lanza enl siguiente Error: Warning: mysqli_stmt_bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\xampp\htdocs\cursophpyoutube\49ConsultaPreparada_Datos.php on line 32. Mis lineas de codigo hasta la funcion donde se encuentra el error son las siguientes:
+Dafne Marroquin Hola !! Utilizando la clausula LIKE en la instrucción SQL junto con los comodines de turno. Espero tratarlo en un vídeo ahora que lo mencionas. Un saludo
Profe muchas gracias, Profe disculpa tengo una duda si tengo la conexión a bases de datos en forma POO como puedo hacer para reutilizar el mismo código de la conexión lo he introducido en una función y no me lo permite y a la vez lo he enlazado con require e include y no me lo permite Agradecería mucho tu después
Pues necesitaría ver tu código, pero aparentemente lo estás haciendo bien. Debes guardar el código de la conexión en un archivo php independiente y después incluirlo con require o include. Si estás haciendo todo esto y no te funciona, debes tener algún error de sintaxis que no ves. Un saludo!!
Profe como te comentaba mi problema es que al darle clik al botón de de dale, la pagina luego se queda en blanco, no da error pero tampoco muestra nada, solo se queda en blanco y no se que sera le dado vueltas y vueltas y no se que hice mal :( AQUÍ DEJO EL CÓDIGO Formulario_Busqueda_paises.php Documento sin titulo Introduce pais: ====================================================== resultados_paises.php Documento sin titulo
El código de resultados_paises.php no tiene nada que ver con el que tienes tú. Tú tienes dos formularios y te falta todo el código php de la página resultados_paises.php Un saludo!!
Disculpe habia copiado mal el codigo , aqui lo dejo de nuevo. Profe como te comentaba mi problema es que al darle clik al botón de de dale, la pagina luego se queda en blanco, no da error pero tampoco muestra nada, solo se queda en blanco y no se que sera le dado vueltas y vueltas y no se que hice mal :( AQUÍ DEJO EL CÓDIGO Formulario_Busqueda_paises.php Documento sin titulo Introduce pais: ====================================================== resultados_paises.php Documento sin titulo
profe juan por favor necesito de su ayuda, no se por que mi editor de codigo brackets no me toma las funciones mysqli_stmt_bind_param() ni las demás que se necesitan continuación.
Hola, haciendo control de errores en una conexión orientada a objetos. Cuando intento mostrar errores en el binding ($stmt->bind_param...), no consigo sacar el mensaje de error (según la documentación oficial con $stmt->error), sin embargo sí muestra el número de error (0) con $stmt->errno. ¿Qué estoy haciendo mal?
No recuerdo ya el código de este vídeo, pero si no colocas la primera variable efectivamente es como si nunca hubiera existido. De hecho es que nunca existió. El tema es ver si el primer ok lo puedes quitar sin consecuencias. Un saludo!!
Holas, probé el código y me salia error en; $ok=mysqli_stmt_bind_param($resultado, "s", $pais); estuve un tiempo viendo el error sin solucionar, pero al final lo detecte, mi error estaba en la consulta: $sql="select codigo_articulo, seccion, precio, pais_origen, from productos where pais_origen=?"; debia ser asi: $sql="select codigo_articulo, seccion, precio, pais_origen from productos where pais_origen=?"; no debe haber coma antes del from.
Apuntarlo dice, habrá que hacerse un poster con el powerpoint...y ponerlo al lado de las herencias de java. Madre mía....ja, ja. Un saludo Juan, y que sigas trabajando mucho, que me he interesa que estés ocupado....He cambiado de jefe ahora es un tal Mariano el que me tiene que pagar.
Ups ... cuánto lo siento. Cuando ocurren estas cosas uno se desanima y se deprime, pero normalmente siempre es porque se va a mejorar en el futuro. Ánimo
Buenos días. Excelente vídeo. Me aparecen estos errores: Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt
buenas, se que el vídeo es viejo pero me sucede un problema al yo colocar $resultado=mysqli_prepare($conexion,$sql); en la siguiente sentencia que es ok=mysqli_stmt_bind_param($resultado, "s", $pais); me dice que falta el parametro del tipo mysqli_stmt coloque un echo $resultado a ver que me arrojaba y sucede que me sale que es nulo osea no me esta retornando un True o False porque coloque un gettype a $resultado y me dice que es del tipo booleano, si me puedes ayudar con eso te lo agradeceria mucho de igual manera gracias por todos tus videos estan buenisimos
buenos dias prof. si....en el minuto 13:00 se almacena un valor boleano en una variable $ok y en el minuto 15:18 se almacena otro boleano en $ok... mi pregunta es... la segunda variable $ok reemplaza el valor de la primera variable $ok ? ..... gracias!!
y por que remplazarla simplemente?, no seria mejor saltarse ese código ya que no alcanza a ejecutarse en el "IF", lo veo como si nunca hubiese estado ese valor ya que lo sobre escribió. favor ayúdeme a entender eso :S
Saludos a la comunidad y a la excelente didáctica del Instructor, tengo Freya Elementary y trato de ver el error del código que pego a continuación: no genera error solo sale ARTICULOS ENCONTRADOS: Y DEJA EN BLANCO LO DEMAS......GRACIAS DE ANTEMANO Conexion a BBDD table{ width:50%; border:2px dotted #FF00; margin:auto;
Muy buenas maestro tengo este problema... Resulta que al declarar dentro de la variable $ok las variables que resiviran la informacion de los campos en la consulta sql no las puedo llamar al menos de eso me doy cuenta porque el dreamweaver al escribir $ no me las muestra, estan como privatizadas y no entiendo porque mi codigo no me muestra ningun error solo que, obviamente no puedo mostrar en pantalla el resultado ya que las variables estan como si no existieran cheque el codigo include ("mysql_connect.php"); $conexion=mysqli_connect($host,$user,$pw) or die ("No se ha podido conectar con la BBDD"); mysqli_select_db($conexion,$db) or die ("No se encuentra la BBDD"); if (mysqli_errno($conexion)){ echo "Fallo al conectar con la BBDD"; exit(); } $busqueda=$_GET["proc_busqueda"]; mysqli_set_charset($conexion,"utf-8"); $sql="SELECT Codigoarticulo,seccion,nombrearticulo from productos1 where Codigoarticulo=?"; $resultado=mysqli_prepare($conexion,$sql); $ok= mysqli_stmt_bind_param($resultado,"s",$busqueda); $ok=mysqli_stmt_execute($resultado); if ($ok==false){ echo"Error al ejecutar la consulta"; }else { $ok=mysqli_stmt_bind_result($resultado,$codigo,$seccion,$nombre); echo "Articulos encontrados"; while (mysqli_stmt_fetch($resultado)){ echo "$codigo,$seccion,$nombre"; } }
ok, este mensaje va junto con el otro que pusiste anteriormente. No veo error en el código a no ser que en la instrucción select hayas escrito algún nombre de campo incorrectamente o que la conexión con la BBDD esté mal. El resto del código lo veo bien...
Para minimizar el codigo dire , que ve mal aca con respecto a las variables no me tira ningun error, pero al declararlas en el $ok luego al ponerlas en el echo ""; dentro del else es como si no estuviesen declaradas si me explico??? no me las llama $ok= mysqli_stmt_bind_param($resultado,"s",$busqueda); $ok=mysqli_stmt_execute($resultado); if ($ok==false){ echo"Error al ejecutar la consulta"; }else { $ok=mysqli_stmt_bind_result($resultado,$codigo,$seccion,$nombre); echo "Articulos encontrados"; while (mysqli_stmt_fetch($resultado)){ echo "$codigo,$seccion,$nombre"; } }
Bueno al parecer la solución ahora es un poco diferente , este es un ejemplo que vi en internet, voy a intentar adaptarlo $stmt = $mysqli->prepare("SELECT * FROM myTable WHERE name = ?"); $stmt->bind_param("s", $_POST['name']); $stmt->execute(); $result = $stmt->get_result(); if($result->num_rows === 0) exit('No rows'); while($row = $result->fetch_assoc()) { $ids[] = $row['id']; $names[] = $row['name']; $ages[] = $row['age']; } var_export($ages); $stmt->close();
Tardé un poco pero ya me quedó , si alguien esta viendo el curso en el 2018 en adelante este codigo servirá, a menos que cambien cosas en las versiones:
@Alfonso Acho pues claro!! 5.6 es una versión mas antigua, es probable que el código de el señor juan te corra tal como esta porque estás en esa versión, pero para versiones posteriores ya no funciona, por ahi cuando busques las funciones verás que dice: "ha sido descontinuado en la version tal" xp
Acá la consulta preparada en poo; me pareció menos código, intente colocar el comodín pero NO encontré información si alguno sabe como es favor me dice gracias.
Hola profesor! Buenas noches! Disculpe tengo una duda, si quisiera utilizar el operador OR en mi consulta SQL para que elija una opción u otra. en mysqli_stmt_bind_param() me manda a este error " mysqli_stmt_bind_param(): Number of variables doesn't match number of parameters in prepared statement in..." Podría ayudarme por favor. Esta es mi consulta: "SELECT CODIGO_ARTICULO,SECCION,NOMBRE,PRECIO FROM PRODUCTOS WHERE CODIGO_ARTICULO = ? OR NOMBRE = ? "
La instrucción SQL parece correcta. Hay un ejemplo en el curso (quizá un poco más adelante) de consulta con más de un parámetro. Si avanzas la verás. Un saludo!!
mi codigo no funciona, ayuden porfavor : DOCUMENTO SIN TITULO me sale: Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\PHP MySQL esultados_paises.php on line 30 Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\PHP MySQL esultados_paises.php on line 32 Error al ejecutar la consulta
Hola buenas a todos, me da error en esta linea $ok = mysqli_stmt_bind_param($resultado, "s", $pais); con esta descripcion mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in Aclaro ( ya tengo $resultado= mysqli_prepare($conexion,$sql);)
hola a todos, aver si alguien me ayuda, pues tengo este problema, cuando le doy al boton de buscar me imprime en pantalla "articulos encontrados:", pero no me saca la lista de dichos articulos, os dejo el codigo aqui, gracias!!
Chema a mi me pasó lo mismo y me quebré la cabeza y lo resolví poniendo el signo = en el formulario despues de name="buscar" y se resolvió. Ojalá te sirva.
Hola Juan, ejecuto el programa con CONSULTA PREPARADA y me saca este ERROR: ! ) Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\wamp\www\CURSO PHP\Pagina_Buscar_Prueba.php on line 34 Call Stack # Time Memory Function Location 1 0.0007 247368 {main}( ) ..\Pagina_Buscar_Prueba.php:0 2 0.0056 257760 mysqli_stmt_bind_param ( ) ..\Pagina_Buscar_Prueba.php:34 Tengo PHP 5.5.12 y no he podido encontrar el error. Podrías ayudarme por favor ?.. Un saludo. Mil Gracias.. ESTE ES EL CODIGO:
espero no responder demaciado tarde, el error se debe a que en un estilo orientado a procedimientos, prepare retorna un bool, puedes ver esa info aquí: php.net/manual/es/mysqli-stmt.prepare.php
Tengo este mensaje de error: Fatal error: Array callback has to contain indices 0 and 1 in D:\xampp\htdocs\PildorasInformaticasPhp\video49ConsultasPreparadasResultadosPaises.php on line 9 La linea 9 a la que se refiere es: $pais = $_GET("buscar"); Que podré hacer para evitar ese error?
me dice esto y no se porque: Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\PaginaPHP\INYECCIONsql\ConsultasPreparadas\accion.php on line 34 Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\PaginaPHP\INYECCIONsql\ConsultasPreparadas\accion.php on line 36 mi codigo: $pais = $_GET["pais"]; require("require.php"); $conexion = mysqli_connect($db_host,$db_nombre,$db_contra); if(mysqli_connect_errno()){ echo "Error al conectar con la base de datos"; exit(); } mysqli_select_db($conexion, $db_nombre) or die ("No se encuentra la base de datos"); mysqli_set_charset($conexion, "utf8"); $sql = "SELECT CODART, SECCION, PRECIO, PAISDEORIGEN FROM productos WHERE PAISDEORIGEN = ?"; $resultado = mysqli_prepare($conexion, $sql); $ok = mysqli_stmt_bind_param($resultado, "s", $pais); $ok = mysqli_stmt_execute($resultado); if($ok == false){ echo "Error al ejecutar la consulta"; }else{ $ok = mysqli_stmt_bind_result($resultado, $codigo, $seccion, $precio, $pais); echo "Articulos encontrados: "; while(mysqli_stmt_fetch($resultado)){ echo $codigo . " " . $seccion . " " . $precio . " " . $pais . ""; } mysqli_stmt_close($resultado); }
$sql = "SELECT CODART, SECCION, PRECIO, PAISDEORIGEN FROM productos WHERE PAISDEORIGEN = ?"; fijate si no tiene acentos en tu DB yo lo soluciones poniendo acento en otro problema que no los define la function mysqli_stmt_execute() no se cual vendria ser el error :/
Material completamente obsoleto, sería interesante eliminar el contenido ya que puede causar confusión hoy en día a principiantes, que es a quienes está dirigido el video.
en serio completamente? entiendo que un lenguaje pueda cambiar en los años, pero para decir que no hay nada rescatable en estos videos es como demasiado no?
@@gerardoruizmendezc7242 Lo que comenté lo he dicho "en serio completamente" Ahora, yo no he dicho que no hay nada rescatable... Vuelvo a decirlo por si no quedó claro, y lo digo con respeto pero con firmeza, es un material obsoleto , que puede confundir a quien inicia en estos temas, y que sería interesante retirarlo de youtube para evitar esos problemas. Nada más que eso, saludos cordiales.
Que tal buen día Profesor, a pesar de que ya tenía conocimientos previos en PHP, este curso resulta excelente tanto para principiantes como persona ya esxpertas en la materia, muchas felicidades y éxito sin duda el mejor curso que he encontad.
Saludos desde la Ciudad de México
Gracias por el comentario. Me alegro de que te guste el curso. Un saludo!!
mysqli_stmt_num_rows($resultado) // devuelve un entero con el numero de filas del resultado. -- Excelente para condicionales!
Especificación del tipo de caracteres
mysqli_stmt_bind_param($resultado,"caracterDescripcion",$pais);
Carácter Descripción
i la variable correspondiente es de tipo entero
d la variable correspondiente es de tipo double
s la variable correspondiente es de tipo string
b la variable correspondiente es un blob y se envía en paquetes
Gracias!
Sus clases son la ostia, me agrada que enseñe teoría, para así saber como funciona el programa.
tiene razón este shur
He tenido el gusto de seguir los cursos que expuso, PHP, JAVASCRIPT, SQL, y en principio debo felicitar su labor, su claridad, elocuencia y didactica que utiliza en cada una de sus ediciones....soy un desarrollador de la vieja escuela, con el reto de elaborar un sistema que me encomendaron utilizando esta tecnologia, y gracias a lo que vi en sus videos ese reto sera cumplido.... Seria interesante que tenga la gentileza de crear el curso de PDO, que complementaria definitivamente mi trabajo a realizar...... nuevamente felicidades por la labor realizada.
Hola, buenas noches. Antes que nada agradecerte Juan por tu tiempo y pedagogía. Quería realizar la siguiente consulta, o comentar el problema que estoy teniendo: Cuando realizo la consulta lo único que se imprime en pantalla es la frase :"Personas encontradas: " y, lo que imprimí en el WHILE, no lo hace. Revisé el código y se lo ve bien.
si tienes la misma base de datos del video cambia los nombres de la tabla y ponlo sin acento puede que tengas un error en la query por eso
saludos desde el 2020, me ah ayudado a aprender PHP ami ritmo desde hace 3 meses que inicie con este curso.
from: Mexico,Sinaloa.
Juan excelente vídeo, es bueno aprender de seguridad en php para tener una página solida, una inquietud... me funcionó todo bien, ya al final en el while ejecuto la búsqueda pero solo me devuelve un valor con ese criterio y no todos los que hay. Saludos desde Colombia.
Hola!! Gracias por el comentario. Revisa bien que no falten acentos o símbolos de este tipo en el criterio que introduces en el formulario. Por ejemplo, yo en mi tabla tengo la sección ferretería (con acento) y alguno hay de ferreteria (sin acento). Si en el criterio lo pongo sin acento, solo saldrá el que está sin acentuar. No digo que este sea tu problema, pero es un fallo común cuando no salen todos los registros que esperamos.
Si ves que siguen sin salirte todos los registros copia y pega por aquí todo tu código para que pueda localizar el posible error (si tengo tiempo). Un saludo
pues la verdad le he intentado y pues tal ves no encuentro el problema ya que mi criterio de búsqueda es: COLOMBIA donde tengo 6 artículos con ese país de origen y nada, te dejo el código aquí para que lo veas mejor Gracias!
lh3.googleusercontent.com/-nzUdAioyGCs/V1hLqRLLmBI/AAAAAAAAB2E/HQPXfW1TccI9qjBMqQsmwTqylcwfOxOGQCCo/s800/Captura.PNG
No veo fallo excepto que falta un > de cierre en el
pues era eso jajajaja a cualquiera le pasa, Gracias Juan!
Excelente el curso, muy bien explicado, felicitaciones. Tengo una consulta: como paso los parámetros a la función mysqli_stmt_bind_param si en la consulta SQL tengo mas de un criterio en la instrucción WHERE? Gracias
Que todo te esté yendo bien profe Juan.
Ayúdame con una duda (de seguro sencilla) en el min. 15:42 aprox. utilizas :
$ok = mysqli_stmt_bind_param($resultado, "s", $pais);
y luego al ejecutar la consulta sobre escribes la variable $ok
$ok = mysqli_stmt_execute($resultado);
Mi duda es si es que yo en la primera instrucción solo ejecuto la función y el resultado no lo asigno a ninguna variable (en este caso la variable $ok), luego habría algún problema?
No me cansaré de darte las gracias Juan. Una pregunta, si la consulta en vez de un filtro tiene más de uno?? Es decir, que en WHERE haya un AND o un OR, ¿cómo se pone en prepare el ? ? y luego cómo se identifican correctamente en las otras funciones?
Gracias y felices fiestas a todos!
+David Bernabé Gracias por tu comentario. Si me permites, lo veré más adelante en el curso. Haremos consultas preparadas con varios criterios. Un saludo
Que dificil este video!! Lo voy a estudiar unas cuantas veces!!!
Gracias profesor este capitulo a estado muy bueno en el curso, muchas gracias.
+Esteban Quijada Suazo Gracias !! Un saludo
Excelente video. Muy bien preparado, bien estructurado y útil. Gracias por tu trabajo.
Saludos Profesor Juan, primero que nada lo felicito por su pedagogía a la hora de enseñar. Por otro lado, tengo un problema ya que no me funciona el codigo, para ser más especifico el problema lo tengo a la hora de ejecutar el query que al darle al botón de "buscar" del formulario, entra en la condicional if ($ok = "false") y muestra como mensaje "Error al ejecutar la consulta", ya verifiqué los campos de la base de datos y al parecer todo está bien. Aqui le dejo los campos de la base de datos:
CODART SECCION NOMBREARTICULO PRECIO FECHA IMPORTADO PAISDEORIGEN
y aquí le dejo mi codigo:
Espero que me pueda ayudar profesor, porque ya no sé qué hacer.
Hola !! Si consigo un momento te lo reviso y te digo algo. Un saludo
Ok Profesor, se lo agradecería! Ya que esto de las inyecciones es muy importante aprenderlo y necesito saber en qué fallé... Un abrazo!
+pildorasinformaticas Profesor juan, por favor le recuerdo revisar mi codigo porque no logro ver el error, para poder seguir con su curso y despejar mis dudas!
El error es que no puedes colocar FALSE como string 'FALSE', recuerda que no es un string es un Boolean. Espero que hayas podido resolver tu duda.
Alejandro Monzon Gracias amigo, sí, ya la había resuelto... De igual manera gracias por tomarte la molestia de ver mi código
Buenas os pongo que tendria que ser en PHP 8 el Bucle, ya que tiene que ser con la función FETCH en el WHILE
$sql="SELECT Nombre, Oficina, Codigo_de_Empresa FROM progress_excel_avanzado_2016_no WHERE Codigo_de_Empresa= ? ";
$resultado=mysqli_prepare($conexion,$sql);
$ok=mysqli_stmt_bind_param($resultado, "s", $c_emp);
$ok=mysqli_stmt_execute($resultado);
if($ok==false){
echo "Error al ejecutar la consulta";
}else{
$ok=mysqli_stmt_bind_result($resultado, $Nombre, $Oficina, $c_emp);
echo "Artículos encontrados: ";
while ($resultado->fetch()){
echo $Nombre . " " . $Oficina . " " . $c_emp . "";
}
$resultado->close();
mysqli_stmt_close($resultado);
}
Increíble el curso super bien explicado, el código me funciona perfecto solo tengo una duda en este ejemplo en donde usaríamos el comodín '%' para que funcione como buscador?
Buenos días Juan. Quiero felicitarte por tus videos y el tiempo que le dedicas. Es muy loable compartir tus conocimientos y experiencias a personas que deseamos aprender de este mundo de la programación. Aprovecho para hacer una consulta:
1. ¿Faltó cerrar todo el código con mysqli_close($conexion)?, ¿o ya no es necesario?.
Hola !! Sí, lo correcto sería cerrar la conexión. De lo contrario queda abierta y estamos consumiendo recursos de más. En este programa no causa fallo pero es recomendable hacerlo. Bien visto !! Un saludo
Saludos profesor Juan, excelente curso sobre PHP, su forma de explicar es muy comprensiva, le comento que en ninguno de los vídeos anteriores me había generado error hasta el día de hoy en el vídeo #50, ya he revisado de arriba a abajo el código y no encuentro error, le explico, mi error esta ubicado en la parte del mysqli_prepare. He revisado sobre la acentuación y la consulta esta bien al igual que la conexión en codigos aparte, pero al incluirlos en mysqli_prepare($consulta,$sql) no me devuelve el mysqli_stmt
me aparece el error
Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\Curso_PHP\consultas_preparadas_inyeccion_2.php on line 33
hola Jhon, tu unico error es en la linea mysqli_set_charset($conexion, "utf-8"); lo unico que hay que hacer es "utf8", para que se muestren los caract como eñe o acentuacion, como lo tienes si buscas pais como españa, japón no te mostrara porque no hay coicidencia porque no toma los valores
saludos
tuve el mismo problema. Lo pude solucionar poniéndo el nombre de cada campo a seleccionar dentro de comillas invertidas (` `). Quedaría así la consulta:
$sql="SELECT `CODIGOARTICULO`, `SECCIÓN`, `PRECIO`, `PAÍSDEORIGEN` FROM PRODUCTOS WHERE PAÍSDEORIGEN=?";
gracias cada vez va mejorando el contenido, gracias profesor !!!!
Buenas tardes Juan, excelente video como siempre. Quería preguntar como se usarían los caracteres comodín % porque poniendo estos delante y detrás de la interrogación, usando y sin usar comillas, y obviamente usando siempre LIKE en lugar de =, da error en cualquiera de ellos. He estado buscando por la red y he visto algo que parecía que lo correcto es poniendo los caracteres también en la misma variable, es decir $pais= "%$_GET['buscar']%"; pero también me da error. Si está explicado en algún video posterior no pierdas tiempo en contestar este comentario porque llegaré a verlo más pronto que tarde ;). Un saludo y muchas gracias por tus tutoriales.
No está aún, pero lo explicaré. Un saludo!!
¡Enorme! Muy bien explicado.
Que tal, antes que nada excelente video y curso, como se haria una consulta preparada dentro de otra??? estoy tratando de hacer eso pero no lo he conseguido
Hola Juan, tengo otra pregunta:
1. Si es que en la consulta SQL, en vez de haber puesto los 4 campos de la consulta, se hubiera puesto el asterisco: $sql="SELECT * FROM PRODUCTOS WHERE PAÍSDEORIGEN=?", para poder visualizar todos los campos de la BBDD. ¿Cómo se hubiera definido las variables en el procedimiento $ok=mysqli_stmt_bind_result($resultado, __,__,__)? Ya que en tu ejemplo habías creado 4 variables para poder enlazar con los 4 campos de la consulta.
Hola !! Pues exactamente igual. Tendrías que crear una variable por cada campo que tuviera la tabla. En el caso del vídeo son cuatro porque cuatro son los campos incluidos en la instrucción SQL. En caso de * crearíamos tantas variables como campos tenga la tabla. Un saludo!!
Saludos profesor hace poco tome este maravilloso curso el cual le agradezco de todo corazón, no solo por este sino también por todos los que dicta en su canal.
E tenido un problema y es que no me da error, pero tampoco al darle al botón submit en el navegador no me carga nada, se queda en la misma pagina acá el código:
Formulario:
Formulario Busqueda Pais
Introduce País:
Código PHP;
Espero me pueda ayudar.
hola Elvis tu error esta en form action"resultados te falta el signo de igual en action que debe llamar al archivo pho action="resultado..... solo es eso
saludos
Excelente explicación maestro!
Hola Profesor, felicidades por tu trabajo que es espectacular.
Mi duda es, ¿si se pueden usar las funciones mysqli_afected_rows o mysqli_num_rows, para enviar un mensaje si no se encuentran artículos.
Yo lo conseguí con una variable incrementándola dentro del while (fetch) y con un if fuera del bucle, pero me parece poco serio.
Un saludo.
Excrlente curso. ¿donde puedo descargar los programas que menciona que esran listos para bajarse y ser usados para no escribir todo el codigo?
Para quien desee hacerlo con tablas
recordar poner esto en el
table, tr, td {
border: 1px solid gray;
border-collapse: collapse;
}
td {
padding: 5px;
width: 30%;
text-align: justify;
}
y esto donde el maestro puso la impresión es decir dentro del while()
echo "$codigo";
echo "$seccion";
echo "$precio";
echo "$pais";
Gracias por el aporte. Saludos!!
Gracias por el vídeo y enseñarme estos conceptos
Me parece que el primer $ok debería ser un if para comprobar que no introducen inyecciones, si sale false, que salga un error, y si sale true, que se aplique el resto de código. ¿No?
Gran vídeo, de todas formas.
Un saludo
F.
profe una pregunta que programa es el que usa para hacer las flehas o escribir o señalar y de antemano gracias por el curso muy bueno y una peticion que le queria pedir ps viendo mi comentario ve que ahora el php esta en la version 7 me gustaria que hiciera un pequeño curso enseñandonos lo nuevo que han implementado en esta version de php7 muchas gracias por este gran curso tenia un conocimiento previo en php algo basico y con usted he aprendido hartas cosas gracias otra vez
La herramienta se llama "ZoomIt". Es gratuita y portable. Si la buscas en Google la encontrarás rápidamente. Un saludo!
Una consulta: los datos de conexion se pueden ocultar? gracias y saludos
Una pregunta, que ventajas te aporta esta consulta preparada mediante estas funciones de SQL frente a simplemente tratar el dato recogido con PHP (hacerle un trim y un addslashes antes de meterlo en la query)? Ambas evitarían el SQL injection si no me equivoco
Saludos Juan, muy interesantes videos; he aprendido mucho, felicitaciones por el esfuerzo. ¿Qué programa usas para hacer los cuadros y las flechas con que señalas?
Gracias por el comentario. Uso un programa gratuito que se llama zoomit. Un saludo!!
Buenísimo el video. gracias por el aporte
una consulta, la función mysqli_stmt_fetch() construye un array indexado o asociativo con las variables definidas en la funcion mysqli_stmt_bind_result() ??
hola juan disculpa que te moleste, en verdad creo que eres na figura, haces muy pero que muy bien tu trabajo, te felicito. por otra parte en este capituo he tenido un error que no encuentro la manera de como resolverlo, quisiera ver si puedes ayudarme, aqui te lo dejo:
Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\Php MySQL Curso\cap49a.php on line 43
Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\Php MySQL Curso\cap49a.php on line 47
error en consulta
Para poder resolver este tipo de duda, necesito que me copies y pegues por aquí todo tu código. Un saludo!!
+pildorasinformaticas Ya resolví maestro muchas gracias por todo lo que haces saludos!!
como lo resolviste tuve el mismo error
+Alfredo Marquez sólo volví a escribir el código en otro proyecto
Ya me di cuenta me faltaron unas comas donde va el select
AQUI ESTE EL CODIGO COMPLETO.
como te comentaba mi problema es que al darle clik al botón de de dale, la pagina luego se queda en blanco, no da error pero tampoco muestra nada, solo se queda en blanco y no se que sera le dado vueltas y vueltas y no se que hice mal :(
Formulario_Busqueda_paises.php
Documento sin titulo
Introduce pais:
======================================================
resultados_paises.php
Documento sin titulo
No se si te sirva pero la concatenacion no esta bien creo. no hay espacio entre una y otra.
Que tal buenos días, cuando pongo la función "mysqli_stmt_bind_param", no se pone como función se queda como texto (no cambia de color), estoy usando dreamweaver cc 2017, como puedo solucionar esto agradeciendo su aporte.
Gracias crack x la explicación
estaría bueno un cursito de haking ético
Hola Profesor, primero que nada felicitaciones, es usted un excelente profesor. Muchas gracias estoy aprendiendo mucho de sus videos. Se que ya hace mucho que se publico este vídeo, pero me sale error al ejecutarlo y no logro distinguir el problema, quiero ver si me puede auxiliar. De antemano muchas gracias y saludos desde México.
Error:
Warning: mysqli_stmt_bind_result(): Number of bind variables doesn't match number of fields in prepared statement in C:\AppServ\www\ejemplos\3
esultado_paises.php on line 42
linea 42: $ok = mysqli_stmt_bind_result($resultado, $codigo, $seccion, $precio, $pais);
código:
$pais=$_GET["buscar"];
require("datos_conexion.php");
$conexion=mysqli_connect($db_host,$db_usuario,$db_contra);
if (mysqli_connect_errno() ) {
echo "Error de conexión a la Base de Datos";
exit();
}
mysqli_select_db($conexion,$db_nombre) or die ("Error de usuario o contraseña");
mysqli_set_charset($conexion,"utf8");
$sql = "SELECT CODIGOARTICULO, SECCION, PRECIO PAISDEORIGEN FROM PRODUCTOS WHERE PAISDEORIGEN= ?";
$resultado = mysqli_prepare($conexion, $sql);
$ok = mysqli_stmt_bind_param($resultado, "s", $pais);
$ok = mysqli_stmt_execute($resultado);
if ($ok==false){
echo "error al ejecutar la consulta";
}else{
$ok = mysqli_stmt_bind_result($resultado, $codigo, $seccion, $precio, $pais);
echo "Articulos encontrados: ";
while (mysqli_stmt_fetch($resultado)){
echo $codigo . "-" . $seccion . "-" . $precio . "-" . $pais . "" ;
}
mysqli_stmt_close($resultado);
}
Ya encontre el error , faltaba una coma en el select
Hola, gracias por este curso tan instructivo!
Tengo sin embargo una duda: cuando usas la funcion mysqli_stmt_bind_param() para unir los parametros de la sentencia sql dices que usa requiere 3 parametros: el objeto mysqli_stmt, el tipo de dato y la variable con con criterio. Pero, que pasa si hay dos o mas variables con criterio. Es decir si la consulta fuese:
$sql="SELECT CODART, SECCION, PRECIO, PAISDEORIGEN FROM PRODUCTOS WHERE PAISDEORIGEN = 'ESPAÑA' and SECCION = 'JUGUETERIA'";
¿Como se escribiría eso? ¿Asi?
$sql="SELECT CODART, SECCION, PRECIO, PAISDEORIGEN FROM PRODUCTOS WHERE PAISDEORIGEN = ? and SECCION = ? ";
Y en el raro caso que fuese asi esto ¿como seria la recepcion de estas variables en la mysqli_stmt_bind_param() ¿Algo asi? ¿recibiria 4 parametros en lugar de los 3 que apuntabas?
$ok=mysqli_stmt_bind_param($resultado, "s", $pais, $seccion);
Gracias de nuevo por tu curso! Lo voy siguiendo con mucha atención.
Gracias por el comentario. Creo recordar que más adelante en el curso se ve el código necesario que contempla esa posibilidad, es decir, una consulta preparada con más de un parámetro. Si sigues avanzando lo verás más adelante. Un saludo!!
Te felicito por tus videos.
hola esta bueno el video tengo un inconveniente antes con msqli usaba esto para que me diera cuando había resultado o no if($result->num_rows==0) pero con esto no logro que me de nada, como deberia ser
Profesor una pregunta veremos lo que es WEBSERVICES? estoy buscando trabajo como prácticante y ya en 3 ocaciones me han hecho esa pregunta acerca de WEBSERVICES.
Yo la duda que tengo,,,,ahora estoy aprendiendo contigo a realizar el código con procedimientos, luego se hará con poo, al final con que es mejor programar, con procedimientos o poo? , como java , C#, python , es como se debe programar ahora a poo?, cual es la linea a seguir?, eres la luz que sigo, orientame por favor.
También estoy viendo tu curso de Java, es bueno que lo siga la vez que este o debería centrarme en este, por desgracia me sobra bastante tiempo, por eso hago los dos, y porque no tienes uno de Python que si no,,,,,jeje.
Hay que centrarse en un sólo lenguaje de programación?,
Me gustaría programar bien, con esfuerzo ya lo se, pero con un buen maestro como tù mejor.Tengo un cacao..
Un saludo
+francisco Javier andres gonzalez Hola !! Lo de hacer más de un curso a la vez depende de cada uno. Hay personas que se les da muy bien la programación y tienen una gran capacidad de asimilación. Sin embargo cuando se está aprendiendo, yo recomiendo ir de uno en uno. Primero un curso, luego otro etc
Respecto a estilo por procedimientos o poo, recomiendo hacerlo por poo. Es más moderno, con código mas limpio y es la lñínea que siguen los lenguajes de programación modernos. En breve me pondré a programar estilo poo.
Un saludo
Tengo una duda la inyección solo aplica cuando existe la clausula where, es decir si yo solo tengo mi consulta asi. "SELECT * FROM alumnos" no seria necesario hacer una consulta preparada O si.
Buenas, Profe excelente curso, quiero comentarle que tengo un problema y es que mi editor de texto "brackets" no reconoce la función mysqli_stmt_bind_param y no se cual sea la causa de ese problema, espero me ayude muchas gracias profe
Tal vez tengas un error de sintaxis cerca de la función. Copia y pega todo tu código por aquí para que yo u otra persona te podamos ayudar. Un saludo!!
pildorasinformaticas buenos días, ya me salio todo bien aunque el editor mostraba que no leía la función el servidor lo hizo correctamente y obtuve los resultados a la par con usted Profe, muchas gracias 😁
mismo problema tengo, me sale esto
Fatal error: Uncaught Error: Call to undefined function msysqli_stmt_execute() in C:\xampp\htdocs\curso_php\Evitando Inyeccion\Evitando_inyeccion.php:29 Stack trace: #0 {main} thrown in C:\xampp\htdocs\curso_php\Evitando Inyeccion\Evitando_inyeccion.php on line 29
me podrian ayudar un favor
No se supone que añadiendo a addslashes y htmlentities es suficiente?
Como siempre gracias por tus videos, ayudan muchisimo. Tengo una duda, no se como ingresar la funcion mysqli_affected_rows que vimos en el video anterior. Ya que cuando la ingreso, por mas que exista el pais que estoy buscando en la base de datos, me dice "No se ha encontrado registro con ese pais". Le dejo el codigo si tiene tiempo para verlo.
Profe juan, excelente curso y vídeo!
Al ejecutar la búsqueda, me sale el siguiente error:
Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\Curso PHP\49resultados_pais.php on line 22
Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\Curso PHP\49resultados_pais.php on line 25
Leyendo la documentación de PHP, en php.net/manual/es/mysqli.prepare.php respecto al método mysqli_prepare(), se supone debe devolverme el objeto de la sentencia o FALSE si ocurre un error, no obstante, me esta devolviendo TRUE, por lo tanto la función mysqli_stmt_bind_param() me indica más tarde que debe recibir como parámetro un objeto de tipo mysqli_stmt, y no un boolean. ¿Alguien sabe por qué se debe éste error?
Mi código es:
Hola !! Gracias por el comentario. He probado tu código y me funciona bien. Lo único que tienes diferente a mi, es la instrucción SQL. Asegúrate de que los campos los tienes sin acentuar en la BBDD. Lo demás es idéntico. Si una vez comprobados los campos en la BBDD te sigue sin funcionar, la verdad no sabría decirte de dónde viene el error. Un saludo!!
@@pildorasinformaticas
A mi me paso tambien el error , y todo se debia a un " accento " o sea...
en lugar de artículos =>>> tenia solo articulos.
Por lo tanto solo queda que revises bien los acentos, sea enla base de datos o en tu codigo.
PS: por esa razon, no es recomendable usar accentos y simbolos raros a la hora de programar!
Saludos desde la costa tropical!!
profe una consulta por que en el bucle while no utiliza una variable como lo has hecho en otras consultas anteriores ejemplo while( $fila = mysqli_stmt_fetch($resultado)) si no lo hace directamente con la funcion ejemplo while( mysqli_stmt_fetch($resultado)) , es decir estos datos no se guardan en un array asociativo, o estoy perdido del tema ,profe me podria aclarar esa duda gracias
Hola profe una consulta despues de mysqli_stmt_close($resultado) habria que tambien cerrar la conexion de la base de datos con mysqli_close($conexion)?? Desde ya muchas gracias.
Buen vídeo, pero, si tengo 2 "?" en la sentencia sql, ¿Qué debería hacer? Un saludo.
Hace años que grabé este curso pero si no recuerdo mal, más adelante realizamos consultas con varios parámetros ? Un saludo!
Buenas Prof. Juan soy nuevo y estoy siguiendo varios de sus cursos. Tengo un problema en esta clase al realizar la busqueda pertinente me muestra los resultados pero me lanza enl siguiente Error: Warning: mysqli_stmt_bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\xampp\htdocs\cursophpyoutube\49ConsultaPreparada_Datos.php on line 32. Mis lineas de codigo hasta la funcion donde se encuentra el error son las siguientes:
hola Juan. Tengo una dura ¿Cómo puedo hacer para poder usar los comodines de búsqueda?
+Dafne Marroquin Hola !! Utilizando la clausula LIKE en la instrucción SQL junto con los comodines de turno. Espero tratarlo en un vídeo ahora que lo mencionas. Un saludo
tambien intente usando LIKE y nada.
Profe muchas gracias,
Profe disculpa tengo una duda si tengo la conexión a bases de datos en forma POO
como puedo hacer para reutilizar el mismo código de la conexión lo he introducido en una función y no me lo permite y a la vez lo he enlazado con require e include y no me lo permite
Agradecería mucho tu después
Pues necesitaría ver tu código, pero aparentemente lo estás haciendo bien. Debes guardar el código de la conexión en un archivo php independiente y después incluirlo con require o include. Si estás haciendo todo esto y no te funciona, debes tener algún error de sintaxis que no ves. Un saludo!!
Profe como te comentaba mi problema es que al darle clik al botón de de dale, la pagina luego se queda en blanco, no da error pero tampoco muestra nada, solo se queda en blanco y no se que sera le dado vueltas y vueltas y no se que hice mal :(
AQUÍ DEJO EL CÓDIGO
Formulario_Busqueda_paises.php
Documento sin titulo
Introduce pais:
======================================================
resultados_paises.php
Documento sin titulo
El código de resultados_paises.php no tiene nada que ver con el que tienes tú. Tú tienes dos formularios y te falta todo el código php de la página resultados_paises.php Un saludo!!
Disculpe habia copiado mal el codigo , aqui lo dejo de nuevo.
Profe como te comentaba mi problema es que al darle clik al botón de de dale, la pagina luego se queda en blanco, no da error pero tampoco muestra nada, solo se queda en blanco y no se que sera le dado vueltas y vueltas y no se que hice mal :(
AQUÍ DEJO EL CÓDIGO
Formulario_Busqueda_paises.php
Documento sin titulo
Introduce pais:
======================================================
resultados_paises.php
Documento sin titulo
Para las personas que le de error modifiquen el while ($mysqli_stmt_fetch($resultado)) a while($resultado ->fetch())
¿Qué quieres decir con preparar la consulta sql ?
profe juan por favor necesito de su ayuda, no se por que mi editor de codigo brackets no me toma las funciones mysqli_stmt_bind_param() ni las demás que se necesitan continuación.
1000 Gracias
Hola, haciendo control de errores en una conexión orientada a objetos. Cuando intento mostrar errores en el binding ($stmt->bind_param...), no consigo sacar el mensaje de error (según la documentación oficial con $stmt->error), sin embargo sí muestra el número de error (0) con $stmt->errno. ¿Qué estoy haciendo mal?
Profe disculpe usted coloca 2 variables denominadas ok donde dice que una reemplaza a la otra, si yo no coloco el primer ok serviría igual?
es como si el primer ok nunca existiera
No recuerdo ya el código de este vídeo, pero si no colocas la primera variable efectivamente es como si nunca hubiera existido. De hecho es que nunca existió. El tema es ver si el primer ok lo puedes quitar sin consecuencias. Un saludo!!
Holas, probé el código y me salia error en; $ok=mysqli_stmt_bind_param($resultado, "s", $pais); estuve un tiempo viendo el error sin solucionar, pero al final lo detecte, mi error estaba en la consulta: $sql="select codigo_articulo, seccion, precio, pais_origen, from productos where pais_origen=?"; debia ser asi: $sql="select codigo_articulo, seccion, precio, pais_origen from productos where pais_origen=?"; no debe haber coma antes del from.
Apuntarlo dice, habrá que hacerse un poster con el powerpoint...y ponerlo al lado de las herencias de java. Madre mía....ja, ja.
Un saludo Juan, y que sigas trabajando mucho, que me he interesa que estés ocupado....He cambiado de jefe ahora es un tal Mariano el que me tiene que pagar.
+Juanito elchispa ¿Rajoy?
+pildorasinformaticas Efectivamente, vuelvo de vacaciones el lunes este, y me encuentro que tengo una ampliación indefinida de vacaciones.
Ups ... cuánto lo siento. Cuando ocurren estas cosas uno se desanima y se deprime, pero normalmente siempre es porque se va a mejorar en el futuro. Ánimo
Gracias Juan, Ya te comentaré
Buenos días. Excelente vídeo. Me aparecen estos errores:
Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt
Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt
tiene que ver un error en la consulta
$sql = "SELECT USUARIO, TELEFONO FROM USUARIOS WHERE USUARIO = ?";
buenas, se que el vídeo es viejo pero me sucede un problema al yo colocar $resultado=mysqli_prepare($conexion,$sql); en la siguiente sentencia que es ok=mysqli_stmt_bind_param($resultado, "s", $pais); me dice que falta el parametro del tipo mysqli_stmt coloque un echo $resultado a ver que me arrojaba y sucede que me sale que es nulo osea no me esta retornando un True o False porque coloque un gettype a $resultado y me dice que es del tipo booleano, si me puedes ayudar con eso te lo agradeceria mucho de igual manera gracias por todos tus videos estan buenisimos
buenas ya encontre mi error es en $resultado=mysqli_prepare($conexion,$sql); me retorna False como puedo solucionar eso? muchas gracias de antemano
buen día profesor ... disculpe no entiendo por qué hay dos variables con el mismo nombre $ok .... gracias !
Hola !! Dime por favor minuto y segundo donde aparecen esas dos variables y te responderé. Un saludo!!
buenos dias prof. si....en el minuto 13:00 se almacena un valor boleano en una variable $ok y en el minuto 15:18 se almacena otro boleano en $ok... mi pregunta es... la segunda variable $ok reemplaza el valor de la primera variable $ok ? ..... gracias!!
Así es. de hecho en el vídeo digo "aquí sobreescribimos lo que hay almacenado en ok". Una reemplaza a la otra. Un saludo!!
y por que remplazarla simplemente?, no seria mejor saltarse ese código ya que no alcanza a ejecutarse en el "IF", lo veo como si nunca hubiese estado ese valor ya que lo sobre escribió. favor ayúdeme a entender eso :S
@@bryanjosebencomohernandez4123 necesariamente no tienen que tener el mismo nombre de variable.
una preguntas y disculpen mi ignorancia.
con esta sentencia mysqli_stmt_close($resultados) es lo mismo que decir mysqli_close($conexion)?
no debe cerrar tambien la conexion a la base de datos asi te ahorrar recursos!!!
es mas como una especie de encriptación
Saludos a la comunidad y a la excelente didáctica del Instructor, tengo Freya Elementary y trato de ver el error del código que pego a continuación: no genera error solo sale ARTICULOS ENCONTRADOS: Y DEJA EN BLANCO LO DEMAS......GRACIAS DE ANTEMANO
Conexion a BBDD
table{
width:50%;
border:2px dotted #FF00;
margin:auto;
Muy buenas maestro tengo este problema... Resulta que al declarar dentro de la variable $ok las variables que resiviran la informacion de los campos en la consulta sql no las puedo llamar al menos de eso me doy cuenta porque el dreamweaver al escribir $ no me las muestra, estan como privatizadas y no entiendo porque mi codigo no me muestra ningun error solo que, obviamente no puedo mostrar en pantalla el resultado ya que las variables estan como si no existieran cheque el codigo
include ("mysql_connect.php");
$conexion=mysqli_connect($host,$user,$pw) or die ("No se ha podido conectar con la BBDD");
mysqli_select_db($conexion,$db) or die ("No se encuentra la BBDD");
if (mysqli_errno($conexion)){
echo "Fallo al conectar con la BBDD";
exit();
}
$busqueda=$_GET["proc_busqueda"];
mysqli_set_charset($conexion,"utf-8");
$sql="SELECT Codigoarticulo,seccion,nombrearticulo from productos1 where Codigoarticulo=?";
$resultado=mysqli_prepare($conexion,$sql);
$ok= mysqli_stmt_bind_param($resultado,"s",$busqueda);
$ok=mysqli_stmt_execute($resultado);
if ($ok==false){
echo"Error al ejecutar la consulta";
}else {
$ok=mysqli_stmt_bind_result($resultado,$codigo,$seccion,$nombre);
echo "Articulos encontrados";
while (mysqli_stmt_fetch($resultado)){
echo "$codigo,$seccion,$nombre";
}
}
ok, este mensaje va junto con el otro que pusiste anteriormente. No veo error en el código a no ser que en la instrucción select hayas escrito algún nombre de campo incorrectamente o que la conexión con la BBDD esté mal.
El resto del código lo veo bien...
Para minimizar el codigo dire , que ve mal aca con respecto a las variables no me tira ningun error, pero al declararlas en el $ok luego al ponerlas en el echo ""; dentro del else es como si no estuviesen declaradas si me explico??? no me las llama
$ok= mysqli_stmt_bind_param($resultado,"s",$busqueda);
$ok=mysqli_stmt_execute($resultado);
if ($ok==false){
echo"Error al ejecutar la consulta";
}else {
$ok=mysqli_stmt_bind_result($resultado,$codigo,$seccion,$nombre);
echo "Articulos encontrados";
while (mysqli_stmt_fetch($resultado)){
echo "$codigo,$seccion,$nombre";
}
}
¿Y cómo tienes declarada la variable $resultado? Me falta ver esa parte del código
Alguien tiene algún PDF de PHP para ir leyendo de paso? El que quiera aportarlo.
Profesor tengo un problema al darle al botón de dale se me queda la pagina en blanco no muestra error pero tampoco muestra nada que podrá ser?
Pueden ser 1000 cosas diferentes. Copia y pega por aquí tu código para que alguien te pueda ayudar a localizar el error. Un saludo!!
Asu que largo mori =( (bien explicado )
Hola! al parecer mysqli_stmt_bind_param y mysqli_stmt_execute han quedado obsoletas, ando buscando la solución al problema.
Bueno al parecer la solución ahora es un poco diferente , este es un ejemplo que vi en internet, voy a intentar adaptarlo
$stmt = $mysqli->prepare("SELECT * FROM myTable WHERE name = ?");
$stmt->bind_param("s", $_POST['name']);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows === 0) exit('No rows');
while($row = $result->fetch_assoc()) {
$ids[] = $row['id'];
$names[] = $row['name'];
$ages[] = $row['age'];
}
var_export($ages);
$stmt->close();
Tardé un poco pero ya me quedó , si alguien esta viendo el curso en el 2018 en adelante este codigo servirá, a menos que cambien cosas en las versiones:
@Alfonso Acho php 7
@Alfonso Acho pues claro!! 5.6 es una versión mas antigua, es probable que el código de el señor juan te corra tal como esta porque estás en esa versión, pero para versiones posteriores ya no funciona, por ahi cuando busques las funciones verás que dice: "ha sido descontinuado en la version tal" xp
@@gerardoicu amigo tiene link de ese ejemplo para ver una explicación por favor, es que me he quedado con la duda también.
Acá la consulta preparada en poo; me pareció menos código, intente colocar el comodín pero NO encontré información si alguno sabe como es favor me dice gracias.
Hola profesor! Buenas noches! Disculpe tengo una duda, si quisiera utilizar el operador OR en mi consulta SQL para que elija una opción u otra. en mysqli_stmt_bind_param() me manda a este error " mysqli_stmt_bind_param(): Number of variables doesn't match number of parameters in prepared statement in..." Podría ayudarme por favor. Esta es mi consulta: "SELECT CODIGO_ARTICULO,SECCION,NOMBRE,PRECIO FROM PRODUCTOS WHERE CODIGO_ARTICULO = ? OR NOMBRE = ? "
La instrucción SQL parece correcta. Hay un ejemplo en el curso (quizá un poco más adelante) de consulta con más de un parámetro. Si avanzas la verás. Un saludo!!
Es el curso de php video 49 consultas preparadas
*Si busco un país que existe* como Mostrar error.
mi codigo no funciona, ayuden porfavor :
DOCUMENTO SIN TITULO
me sale:
Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\PHP MySQL
esultados_paises.php on line 30
Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\PHP MySQL
esultados_paises.php on line 32
Error al ejecutar la consulta
Hola buenas a todos, me da error en esta linea
$ok = mysqli_stmt_bind_param($resultado, "s", $pais);
con esta descripcion
mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in
Aclaro ( ya tengo $resultado= mysqli_prepare($conexion,$sql);)
aah era un Error en la consulta SQL ,
$Buscar="%{$_POST["txtBuscar"]}%";
$consulta="select codigo, descripcion from actividades where descripcion like ?";
gracias me funciono :)
hola a todos, aver si alguien me ayuda, pues tengo este problema, cuando le doy al boton de buscar me imprime en pantalla "articulos encontrados:", pero no me saca la lista de dichos articulos, os dejo el codigo aqui, gracias!!
Chema a mi me pasó lo mismo y me quebré la cabeza y lo resolví poniendo el signo = en el formulario despues de name="buscar" y se resolvió.
Ojalá te sirva.
Hola Juan, ejecuto el programa con CONSULTA PREPARADA y me saca este ERROR:
! ) Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\wamp\www\CURSO PHP\Pagina_Buscar_Prueba.php on line 34
Call Stack
# Time Memory Function Location
1 0.0007 247368 {main}( ) ..\Pagina_Buscar_Prueba.php:0
2 0.0056 257760 mysqli_stmt_bind_param ( ) ..\Pagina_Buscar_Prueba.php:34
Tengo PHP 5.5.12 y no he podido encontrar el error. Podrías ayudarme por favor ?..
Un saludo. Mil Gracias..
ESTE ES EL CODIGO:
revisa la consulta query, seguramente tienes el error ahí. Saludos
espero no responder demaciado tarde, el error se debe a que en un estilo orientado a procedimientos, prepare retorna un bool, puedes ver esa info aquí: php.net/manual/es/mysqli-stmt.prepare.php
revisa el from del select, quizás estas haciendo referencia a la base de datos y no a la tabla
Tengo este mensaje de error:
Fatal error: Array callback has to contain indices 0 and 1 in D:\xampp\htdocs\PildorasInformaticasPhp\video49ConsultasPreparadasResultadosPaises.php on line 9
La linea 9 a la que se refiere es:
$pais = $_GET("buscar");
Que podré hacer para evitar ese error?
no soy experto en el tema, pero trata de usar $pais = $_GET["buscar"]; usando corchetes, no los redondos.
Muchas gracias, fue un error bastante infantil, pero a veces falta que otros ojos lo vean para identificarlo.
@@jairosolanogomez247 yo tambien pase por ese error, me eche a reir xD
me dice esto y no se porque:
Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\PaginaPHP\INYECCIONsql\ConsultasPreparadas\accion.php on line 34
Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in C:\xampp\htdocs\PaginaPHP\INYECCIONsql\ConsultasPreparadas\accion.php on line 36
mi codigo:
$pais = $_GET["pais"];
require("require.php");
$conexion = mysqli_connect($db_host,$db_nombre,$db_contra);
if(mysqli_connect_errno()){
echo "Error al conectar con la base de datos";
exit();
}
mysqli_select_db($conexion, $db_nombre) or die ("No se encuentra la base de datos");
mysqli_set_charset($conexion, "utf8");
$sql = "SELECT CODART, SECCION, PRECIO, PAISDEORIGEN FROM productos WHERE PAISDEORIGEN = ?";
$resultado = mysqli_prepare($conexion, $sql);
$ok = mysqli_stmt_bind_param($resultado, "s", $pais);
$ok = mysqli_stmt_execute($resultado);
if($ok == false){
echo "Error al ejecutar la consulta";
}else{
$ok = mysqli_stmt_bind_result($resultado, $codigo, $seccion, $precio, $pais);
echo "Articulos encontrados: ";
while(mysqli_stmt_fetch($resultado)){
echo $codigo . " " . $seccion . " " . $precio . " " . $pais . "";
}
mysqli_stmt_close($resultado);
}
$sql = "SELECT CODART, SECCION, PRECIO, PAISDEORIGEN FROM productos WHERE PAISDEORIGEN = ?";
fijate si no tiene acentos en tu DB yo lo soluciones poniendo acento
en otro problema que no los define la function mysqli_stmt_execute() no se cual vendria ser el error :/
alguien mateme :,v, xD.. cada vez se pone mas shulo v:, mientras mas código absorvo :v, mas pro me siento v:
Material completamente obsoleto, sería interesante eliminar el contenido ya que puede causar confusión hoy en día a principiantes, que es a quienes está dirigido el video.
en serio completamente? entiendo que un lenguaje pueda cambiar en los años, pero para decir que no hay nada rescatable en estos videos es como demasiado no?
@@gerardoruizmendezc7242 Lo que comenté lo he dicho "en serio completamente" Ahora, yo no he dicho que no hay nada rescatable... Vuelvo a decirlo por si no quedó claro, y lo digo con respeto pero con firmeza, es un material obsoleto , que puede confundir a quien inicia en estos temas, y que sería interesante retirarlo de youtube para evitar esos problemas. Nada más que eso, saludos cordiales.
La verdad no se cuan obsoleto será, a mi hasta este video me ha funcionado todo...