PHP - Number of bind variables doesn't match number of fields

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Number of bind variables doesn't match number of fields

Publicado por Felipe (5 intervenciones) el 27/05/2019 19:00:49
Buen día.

Acudo a este foro buscando me orienten sobre el tema siguiente:

Tengo armado un archivo php para enviar la suma de la consulta en una base mysql.


PHP


El detalle es que me aparece una advertencia en el navegador donde me indica que el número de variables no son los mismos que se han declarado.


PHP2


Espero puedan auxiliarme.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Number of bind variables doesn't match number of fields

Publicado por xve (6935 intervenciones) el 27/05/2019 21:45:40
Hola Felipe, el mismo error te lo indica... la cantidad de vinculaciones de vabiables (bind) que estas haciendo no concuerda con la cantidad espera por la query.

Si te fijas, veras, que el primera valor que obtienes de $_POST["mesliverado"] no existe... fíjate en el primer warning!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Number of bind variables doesn't match number of fields

Publicado por Kathyu (905 intervenciones) el 27/05/2019 23:00:44
1- Le esta dando vuelta a los datos.

1
2
3
familia = ? AND mesliberado = ?
// Y manda
"ss", $meslibre,$fam

Eso ya hace que el query termine mal.

2- Otra cosa es ver que tipo de dato es $meslibre porque usted manda un string y no se sabe si esa variable sea un int.

3- Debería usar camel case con los nombres de variable => $mesLibre
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Number of bind variables doesn't match number of fields

Publicado por Felipe (5 intervenciones) el 27/05/2019 23:08:03
Buena tarde. Ya tengo la solución, es verdad que le estaba dando vueltas y como plantee el problema era complicado de comprender.

Lo que trataba de hacer era obtener la suma de todo el capital originado en los algún mes y tipo de producto especifico(que yo indicaría desde otros parámetros) .


Les comparto el código que hace lo que necesito para que les sea útil en caso de tener una situación similar:


Gracias.


php3a
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Number of bind variables doesn't match number of fields

Publicado por Kathyu (905 intervenciones) el 28/05/2019 00:22:51
Resolvió, si.

Pero era mejor hacerlo con querys preparadas...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Number of bind variables doesn't match number of fields

Publicado por Felipe (5 intervenciones) el 28/05/2019 01:07:32
Me puedes ayudar con un ejemplo porfavor. Suena interesante lo que describes y de seguro es mejor tu consejo. Gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier
Val: 116
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Number of bind variables doesn't match number of fields

Publicado por Javier (42 intervenciones) el 28/05/2019 00:56:50
De paso te recomiendo que limpies las entradas a buscar en una BD.... nunca falta nuestro amigo Bobby Tables
exploits_of_a_mom
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Number of bind variables doesn't match number of fields

Publicado por Felipe (5 intervenciones) el 28/05/2019 01:10:14
No entendí compañero, andamos verdes en estos temas. Sí me ayudas con más detalle de tu recomendación estaria excelente. Gracias por la atención
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier
Val: 116
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Number of bind variables doesn't match number of fields

Publicado por Javier (42 intervenciones) el 28/05/2019 01:16:48
Sin problemas, mira, el detalle es que viendo tu codigo es una consulta a la BD, pero por seguridad debes siempre debes limpiar si o si cualquier tipo de SQL Injection.
Aqui unos ejemplos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$query=    SELECT * FROM usuarios WHERE nombre = 'Pau';
// Aqui todo bien pues esto es lo que se espera dentro del input pero que pasa si queremos inyectar y en el input damos esto:
$_POST['user'] =   "Alicia'; DROP TABLE usuarios; SELECT * FROM datos WHERE nombre LIKE '%";
esto es lo que se ejecutaria ahora en tu query:
 
$query = "SELECT * FROM usuarios WHERE nombre = 'Alicia';
DROP TABLE usuarios;
SELECT * FROM datos WHERE nombre LIKE '%';"
 
//Puedes utilizar esto si usas PDO:
 
// Con funciones
$conexion = mysqli_connect("host", "usuario", "clave", "bdd");
$query = mysqli_query($conexion, "SELECT * FROM usuarios WHERE nombre = '" . mysqli_real_escape_string($conexion, $nombre) . "'");
// Orientado a objetos heredando la clase:
$query = $this->query("SELECT * FROM usuarios WHERE nombre = '" . $this->real_escape_string( $nombre ) . "'");
// Sin heredar la clase
$query = $this->mysqli->query("SELECT * FROM usuarios WHERE nombre = '" . $this->mysqli->real_escape_string($nombre) . "'");
/* donde $this->mysqli es el enlace mysqli a la base de datos */

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Number of bind variables doesn't match number of fields

Publicado por Felipe (5 intervenciones) el 28/05/2019 01:36:39
Creo que lo comprendo..Gracias compañero. Traté de ponerle más fe uno a tu respuesta pero no me dejó..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar