PHP - Me inserta registros vacios

   
Vista:

Me inserta registros vacios

Publicado por Diego (31 intervenciones) el 03/05/2017 16:30:23
Buenas tardes.
Tengo una función que me inserta registros en una base, muy sencillo, pero al ser principiante todo se complica. Luego de insertar el registro me inserta otro registro vacio. La tabla tbl_clientes tiene 4 campos, el primero es id que es numerico auto incrementable, y luego nombre, telefono y email. Por ejemplo, inserta el registro con id 10 con los datos y me genera otro con id 11 con los campos en blanco. La funcion es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class cliente{
	var $nombre;
	var $telefono;
	var $email;
	public static function guardar_cliente($nombre, $telefono, $email){
		require('conexion.php');
		$sql = "INSERT INTO tbl_clientes (nombre, telefono, email) VALUES('$nombre', '$telefono', '$email')";
		if(!$db->query($sql)){
			die('Ocurrio un error ejecutando el query [' . $db->error . ']');
		}
		else{
			$last_id = mysqli_insert_id($db);
			return $last_id;
			$db->close();
		}
	}
 
}

Alguna sugerencia? No encuentro el error.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Me inserta registros vacios

Publicado por Yamil Bracho (653 intervenciones) el 03/05/2017 16:55:09
Imprime el SQL que se esta ejecutando para ver si efectivamente se esta haciendo eso...

1
2
3
$sql = "INSERT INTO tbl_clientes (nombre, telefono, email) VALUES('$nombre', '$telefono', '$email')";
echo $sql;
if(!$db->query($sql)){
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

Me inserta registros vacios

Publicado por Diego (31 intervenciones) el 03/05/2017 20:41:15
Gracias por tu respuesta. Me devuelve:

INSERT INTO tbl_clientes (nombre, telefono, email) VALUES('xxxxxxxx', '111111111111', 'yyyyyyyyyyyyyyy@yyyy.com')

Alguna vez ya me pasó esto, pero no recuerdo como lo solucioné. La consulta está bien, no recuerdo por qué es que inserta el registro e inmediatamente despues, sin ejecutarla nuevamente inserta otro registro en blanco.

Si se les ocurre algo se los agradezco.
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 kip

Me inserta registros vacios

Publicado por kip (861 intervenciones) el 03/05/2017 20:45:31
Hola, puedes colocar el codigo donde llamas al metodo guardar_cliente() ?
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

Me inserta registros vacios

Publicado por Diego (31 intervenciones) el 03/05/2017 20:51:49
Hola, lo llamo de esta manera:

$cliente=cliente::guardar_cliente($nombre, $telefono, $email);

La idea es que me devuelva el número de id del cliente.

El proceso lo hace bien, me genera el cliente nuevo, pero tambien me genera "clientes vacios" la tabla me queda asi

1 xxxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxx
2
3 yyyyyyyyyyy yyyyyyyyyyyyyyy yyyyyyyyyyyyyyy
4
5 zzzzzzzzzzz zzzzzzzzzzzzzzz zzzzzzzzzzzzzzz
6
7 nnnnnnnnnn nnnnnnnnnnnnn nnnnnnnnnnnnnn

Esta llamada la hago desde un script bastante mas grande en el cual una vez recogidos los datos de un form, se genera un cliente, un presupuesto, un detalle del presupuesto, en diversas tablas. Luego se genera un presupuesto en PDF usando la libreria mPDF. Logro generar el presupuesto y guardar todos los datos....pero todos las tablas están teniendo este problema, por lo que evidentemente es un problema con el motor de MySQL, algo en la configuración seguramente, pero es raro porque lo uso en otros proyectos de la misma manera y no me genera ese error, estoy pensando en que tenga algo que ver con el cotejamiento de la DB, aunque creo que esta bien....ya no sé por donde buscar.
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 kip

Me inserta registros vacios

Publicado por kip (861 intervenciones) el 03/05/2017 20:57:11
Entiendo, podrias decirnos si aquella linea $cliente=cliente::guardar_cliente($nombre, $telefono, $email); la usas en algun for, while o foreach ?

Tambien podrias colocarnos el contenido de conexion.php ?

Creo que aquel require esta mal alli !

Intentalo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
require('conexion.php');
 
class cliente{
 
	public static function guardar_cliente($nombre, $telefono, $email){
		global $db;
		$sql = "INSERT INTO tbl_clientes (nombre, telefono, email) VALUES('$nombre', '$telefono', '$email')";
		if(!$db->query($sql)){
			die('Ocurrio un error ejecutando el query [' . $db->error . ']');
		}
		else{
			$last_id = mysqli_insert_id($db);
			return $last_id;
			$db->close();
		}
	}
 
}
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

Me inserta registros vacios

Publicado por Diego (31 intervenciones) el 03/05/2017 21:27:07
Solucionado.....en conexion.php tenia esta instruccion:

mysqli_set_charset($db, 'utf8');

Esto lo había colocado porque necesitaba esa instruccion para poder utilizar la libreria mPDF y pensaba que como a conexion.php lo llamo practicamente de todos lados no tendría problemas, pero evidentemente me generaba conflictos.

La omití, pero no me generaba el PDF y tenia problemas con los acentos, me daba este error:

HTML contains invalid UTF-8 character(s)

Tomé esa instruccion, la saqué de conexion.php y la coloqué antes de hacer las llamadas a los procedimientos que guardan los datos en la DB y solucionado el problema. Todo correcto.

Gracias por su tiempo.
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

Me inserta registros vacios

Publicado por Angel (16 intervenciones) el 06/05/2017 02:24:14
Al parecer estas haciendo algo mal, checa este video que inserta un registro
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