Erro de sintaxe em SQL

  • Autor Autor Daniel Muñoz
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Daniel Muñoz

Daniel Muñoz

1
Pi
Programador
Verificado
Verificación en dos pasos activada
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.
Inserir CODE, HTML ou 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.

Inserir CODE, HTML ou 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.
Inserir CODE, HTML ou 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.
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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.

Inserir CODE, HTML ou 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.

Inserir CODE, HTML ou 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
 
Voltar
Topo