Foros del Web » Programando para Internet » PHP »

error de sintaxis en select

Estas en el tema de error de sintaxis en select en el foro de PHP en Foros del Web. Hola, estoy tratando de hacer un select a una tabla mysql y me da un error de sintaxis: Error MYSQL: You have an error in ...
  #1 (permalink)  
Antiguo 21/10/2003, 00:45
Avatar de alelita1980  
Fecha de Ingreso: octubre-2003
Ubicación: Buenos Aires
Mensajes: 25
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta error de sintaxis en select

Hola, estoy tratando de hacer un select a una tabla mysql y me da un error de sintaxis: Error MYSQL: You have an error in your SQL syntax near 'SELECT In_Id FROM t_incidente'', '')' at line 2
El problema es que ya revisé 50 veces el código y no encuentro dicho error. El error dice que está en la linea 2, pero la sentencia que marca como errónea en realidad está en la línea 4.
Alguien me puede decir donde está la falla??? Muchas gracias!! El código es el siguiente:

<?php include_once('conectar2.php');
$tfa = "SELECT Tf_Id FROM t_tipofalla WHERE Tf_Descripcion = '$Tf_Descripcion'";
$Op = "SELECT Op_Id FROM t_operador WHERE Op_NombreUs = '$Op_NombreUs'";
$Inc = "SELECT In_Id FROM t_incidente";
$DetIn = "SELECT DetIn_Id FROM t_incidente";
$SegIn = "SELECT SegIn_Id FROM t_incidente where In_Id = '$Inc'";
++$Inc;
++$DetIn;
++$SegIn;
$date = date("Y/d/m");
$time = date("h:i:s");
$Sel = "insert into t_incidente (In_Id,DetIn_Id,SegIn_Id,Cl_Id) values
('$Inc','$DetIn', '$SegIn', '$Cl_Solicitud')";
$result = mysql_query($Sel);
if (!$result) {
echo "Error MYSQL: ".mysql_error();
exit;
}
?>


Ayuda por favor!!!
Alelita
  #2 (permalink)  
Antiguo 21/10/2003, 01:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Realmente el numero de linea es el de la consulta SQL que envias a MySQL, no del codigo. El error se genera en el mysql_query().

Mira, creo que tienes un pequeño fallo de concepto. ¿Sabes exactamente que consulta estas mandando ejecutar? Para saberlo haz:
Código PHP:
echo $Sel.'<br>';
$result mysql_query($Sel); 
Y veras la consulta que envias y veras que no tiene una sintaxis valida. Y que no hace lo que creo que crees que hace.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 21/10/2003, 02:38
Avatar de alelita1980  
Fecha de Ingreso: octubre-2003
Ubicación: Buenos Aires
Mensajes: 25
Antigüedad: 20 años, 6 meses
Puntos: 0
En la tabla t_incidente lo que tengo son 4 campos Id que quiero que se autoincrementen (para esto tomo su valor y lo sumo en 1) Y luego quiero que se inserten nuevamente en la tabla t_incidente como un nuevo registro.
El resultado de echo $Sel es:
insert into t_incidente (In_Id,DetIn_Id,SegIn_Id,Cl_Id) values ('SELECT In_Id FROM t_incidentf','SELECT DetIn_Id FROM t_incidentf', 'SELECT SegIn_Id FROM t_incidente where In_Id = 'SELECT In_Id FROM t_incidente'', '')
El problema es que no sé por que ahora me reconoce a la tabla t_incidente como t_incidentf y ya revisé y está bien escrito (con e).
Se te ocurre algo??
Gracias y Salu2
Alelita
  #4 (permalink)  
Antiguo 21/10/2003, 02:45
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
A ver, el problema es que estas trabajando con cadenas. Solo con texto. No has realizado ninguna de esas consultas. No has leido esos valores de las tablas. Estas haciendo las operaciones sobre texto. Para cada consulta que quieras hacer debes hacer un mysql_query() y leer el resultado. En este caso es mejor leer con mysql_result() (www.php.net/mysql_result).

Luego haces las operaciones con los valores leidos. Y metes en la tabla los valores calculados.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 21/10/2003, 02:56
Avatar de alelita1980  
Fecha de Ingreso: octubre-2003
Ubicación: Buenos Aires
Mensajes: 25
Antigüedad: 20 años, 6 meses
Puntos: 0
probe con mysql_result() para cada consulta y me tiró esto:
Warning: Wrong parameter count for mysql_result() in c:\apache\htdocs\tp2\guardaincidente.php on line 3

Warning: Wrong parameter count for mysql_result() in c:\apache\htdocs\tp2\guardaincidente.php on line 5

Warning: Wrong parameter count for mysql_result() in c:\apache\htdocs\tp2\guardaincidente.php on line 7

Warning: Wrong parameter count for mysql_result() in c:\apache\htdocs\tp2\guardaincidente.php on line 10

Warning: Wrong parameter count for mysql_result() in c:\apache\htdocs\tp2\guardaincidente.php on line 13
insert into t_incidente (In_Id,DetIn_Id,SegIn_Id,Cl_Id) values ('1','1', '1', '')

Probé con mysql_query() para cada consulta y me tiró esto:
insert into t_incidente (In_Id,DetIn_Id,SegIn_Id,Cl_Id) values ('Resource id #4','', 'Resource id #5', '')

El código es éste:
<?php include_once('conectar2.php');
$tfa = "SELECT Tf_Id FROM t_tipofalla WHERE Tf_Descripcion = '$Tf_Descripcion'";
$tfas = mysql_query($tfa);
$Op = "SELECT Op_Id FROM t_operador WHERE Op_NombreUs = '$Op_NombreUs'";
$Ops = mysql_query($Op);
$Inc = "SELECT In_Id FROM t_incidente";
$Incs = mysql_query($Inc);
++$Incs;
$DetIn = "SELECT DetIn_Id FROM t_incidente";
$DetIns = mysql_query($Detin);
++$DetIns;
$SegIn = "SELECT SegIn_Id FROM t_incidente where In_Id = '$Inc'";
$SegIns = mysql_query($SegIn);
++$SegIns;
$date = date("Y/d/m");
$time = date("h:i:s");
$Sel = "insert into t_incidente (In_Id,DetIn_Id,SegIn_Id,Cl_Id) values
('$Incs','$DetIns', '$SegIns', '$Cl_Solicitud')";
mysql_query($Sel,$conn);
$Sal = "insert into t_detincidente (DetIn_Id,In_Id,Op_Id,Tf_Id,DetIn_Descripcion,DetI n_Solucion,DetIn_FechaCreacion,DetIn_HoraCreacion, DetIn_Estado) values
('$DetIns','$Incs', '$Ops', '$tfas', 'DetIn_Descripcion', 'DetIn_Solucion', 'date', '$time', '$In_Estado')";
mysql_query($Sal,$conn);
echo $Sel.'<br>';
$result = mysql_query($Sel);
?>

Que te parece??
  #6 (permalink)  
Antiguo 21/10/2003, 03:31
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Lo que devuelve mysql_query() es un identificador de la consulta, no los registros devueltos por la consulta. Si miras en el manual el mysql_result() (www.php.net/mysql_result), esa funcion lleva 3 parametros, y devuelve el valor del campo. En tu caso seria algo asi:
Código PHP:
$valor=mysql_result($variable_devuelta_por_mysql_query,0,0); // los dos ceros es porque quieres el primer campo del primer registro 
$valor seria cada una de las variables donde almacenas los valores que vas a insertar. $variable_devuelta_por_mysql_query es donde has metido lo devuelto por mysql_query() ($variable_devuelta_por_mysql_query=mysql_query()) .

Por supuesto, supongo que todas las consultas devuelven solo un registro. Cosa que no estoy seguro que pase con las consultas sin WHERE, que puede que devuelvan mas de un registro, con lo que puede que falle la logica de tu script.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:10.