Error de sintaxis en SQL

  • Autor Autor Daniel Muñoz
  • Fecha de inicio Fecha de inicio
Daniel Muñoz

Daniel Muñoz

1
Pi
Programador
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Suscripción a IA
Hola betas, estoy intentado realizar un registro a una tabla, pero me arroja error SQLSTATE: 42000 que es error de sintaxis.

El codigo que tengo es el siguiente.
Insertar CODE, HTML o PHP:
$sql = "INSERT INTO denuncia ('id_op', 'id_denunciante', 'id_denunciado', 'id_forma', 'id_ruta', 'sector', 'id_clasificacion', 'direccion', 'descripcion', 'id_tecnico', 'fecha') VALUES ('"."','".$this->id_denunciante."','".$this->id_denunciado."','".$this->id_forma."','".$this->id_ruta."','".$this->sector."','".$this->id_clasificacion."','".$this->direccion."','".$this->descripcion."','".$this->id_tecnico."','".$this->fecha."')";
    $query = mysqli_query($bd, $sql);
    if (!$query) {
      echo 'Error al registrar: '.  mysqli_sqlstate($bd);
      echo '<br/>'.$sql;
    } else {
      echo 'Registro completo: ';
      exit($sql);
    }

El error que me arroja al clickear registrar es el siguiente.

Insertar CODE, HTML o PHP:
Error al registrar: 42000
INSERT INTO denuncia ('id_op', 'id_denunciante', 'id_denunciado', 'id_forma', 'id_ruta', 'sector', 'id_clasificacion', 'direccion', 'descripcion', 'id_tecnico', 'fecha') VALUES ('','4','4','01','14','asd','4','asdasd asdasd','asdasd','1','2014-11-18')

Si inserto directamente desde phpmyadmin no hay drama e incluso solicito que me transforme la sentencia SQL a PHP y el resultado es el siguiente.
Insertar CODE, HTML o PHP:
$sql = "INSERT INTO `sigda_v1`.`denuncia` (`id_op`, `id_denunciante`, `id_denunciado`, `id_forma`, `id_ruta`, `sector`, `id_clasificacion`, `direccion`, `descripcion`, `id_tecnico`, `fecha`) VALUES (\'1\', \'4\', \'4\', \'4\', \'4\', \'asdasd\', \'4\', \'asd\', \'asdasd\', \'1\', \'2014-11-18\');";

El primero valor a introducir id_op es un Auto-incrementable, los demás son pre-cargados por variables

¿Alguien puede decirme donde esta el error o si mi sentencia esta mal formulada, ya que tengo rato mirandola y no le encuentro vuelta.
 
Si vas a poner datos en todas las columas de la base de datos no es necesario meter todo en los (), solo quitalos.

Intenta así el $sql

PHP:
$sql = "INSERT INTO denuncia  VALUES ('".$this->id_denunciante."','".$this->id_denunciado."','".$this->id_forma."','".$this->id_ruta."','".$this->sector."','".$this->id_clasificacion."','".$this->direccion."','".$this->descripcion."','".$this->id_tecnico."','".$this->fecha."')";
 

Me funciono perfecto, le agregue el campo para el autoincrement y listo. A la final quedo asi.

PHP:
$sql = "INSERT INTO denuncia  VALUES ('"."','".$this->id_denunciante."','".$this->id_denunciado."','".$this->id_forma."','".$this->id_ruta."','".$this->sector."','".$this->id_clasificacion."','".$this->direccion."','".$this->descripcion."','".$this->id_tecnico."','".$this->fecha."')";

Mi pregunta seria, porque la sentencia anterior estaba fallando?, puedes explicarme :topsy_turvy:
 
Me funciono perfecto, le agregue el campo para el autoincrement y listo. A la final quedo asi.

PHP:
$sql = "INSERT INTO denuncia  VALUES ('"."','".$this->id_denunciante."','".$this->id_denunciado."','".$this->id_forma."','".$this->id_ruta."','".$this->sector."','".$this->id_clasificacion."','".$this->direccion."','".$this->descripcion."','".$this->id_tecnico."','".$this->fecha."')";

Mi pregunta seria, porque la sentencia anterior estaba fallando?, puedes explicarme :topsy_turvy:

Yo creo por los ' que encerraban la columna, tal vez con los () pero sin los ' también funcionaría.

además yo metería todos los id- en un array, así se ve feo :v
 

Si bueno se ve feo, eso también lo veo igual pero primero quiero dejarlo todo funcional.

Es posible realizar un auto-incrementable compuesto?, imagina que el autoincremente es algo como.

Insertar CODE, HTML o PHP:
[U]204569[/U][B]001[/B]

Donde el 001 seria el incrementable y lo demás seria predefinido. Pero al momento de guardar el autoincremente se guarde completo, es posible eso?
 
Si bueno se ve feo, eso también lo veo igual pero primero quiero dejarlo todo funcional.

Es posible realizar un auto-incrementable compuesto?, imagina que el autoincremente es algo como.

Insertar CODE, HTML o PHP:
[U]204569[/U][B]001[/B]

Donde el 001 seria el incrementable y lo demás seria predefinido. Pero al momento de guardar el autoincremente se guarde completo, es posible eso?

Creo que si, no estoy seguro si así se haga, yo obtendría el último id que se insertó, y sólo le sumaba uno y concatenada :welcoming: pero te digo, así haría yo, no se si haya otra forma
 
Atrás
Arriba