Foros del Web » Programando para Internet » PHP »

algo facil

Estas en el tema de algo facil en el foro de PHP en Foros del Web. holas, resulta que no recuerdo como hcer cuando una instruccion sql es demasiado larga, es decir en php escribo la instruccion pero no me cabe ...
  #1 (permalink)  
Antiguo 09/12/2005, 09:51
 
Fecha de Ingreso: septiembre-2003
Mensajes: 241
Antigüedad: 14 años, 2 meses
Puntos: 0
algo facil

holas, resulta que no recuerdo como hcer cuando una instruccion sql es demasiado larga, es decir en php escribo la instruccion pero no me cabe en una sola linea, entonces recuerdo que hay una forma de "partir" la instruccion en varias lineas sin que esto altere la instruccion total, me pueden decir como se hace.

$sql = "select * from datos"
where dato1 like dato and
dato2 like dato ....
  #2 (permalink)  
Antiguo 09/12/2005, 09:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Puedes escribir simlmente:

Código PHP:
$sql="SELECT * FROM datos [pulsa intro]
WHERE dato1 LIKE '%dato%' AND [pulsa intro]
etc ..."

Mysql lo interpretará correctamente aunque tengas saltos de línea como es el caso.

Si quieres .. también puedes concatenar todo sobre una variable
Código PHP:
$sql  "SELECT * FROM datos";
$sql .= "WHERE dato1 LIKE '%dato%' AND";
$sql .= " etc ..."
OJO con esta forma en respetar los espacios donde corresponda .. verifica siempre si tu $sql generado es el que requieres haciendo un echo $sql .. y observando.

Un saludo,
  #3 (permalink)  
Antiguo 09/12/2005, 10:17
 
Fecha de Ingreso: septiembre-2003
Mensajes: 241
Antigüedad: 14 años, 2 meses
Puntos: 0
no se que pasa o es que la instruccion es muy larga???

me sale el error : Parse error: parse error in :\FoxServ\www\directorio\busqueda.php on line 57

el codigo es este:
Código PHP:
$busca="SELECT usuarios.IdUsuario, categorias.Descri, subcategorias.descri, organizaciones.organizacion, usuarios.nombre, usuarios.apellidos, usuarios.pais, usuarios.ciudad, usuarios.direccion, usuarios.cargoL, usuarios.fono1, usuarios.fono2, usuarios.fono3, usuarios.fonopart1, usuarios.fonopart2 ";
$busca.="FROM organizaciones INNER JOIN (((usuarios INNER JOIN categorias ON usuarios.IdCategoria = categorias.IdCategoria) INNER JOIN subcategorias ON (usuarios.IdSubcategoria = subcategorias.IdSubcategoria) AND (categorias.IdCategoria = subcategorias.IdCategoria)) ON organizaciones.IdOrganizacion = usuarios.IdOrganizacion) ";
$busca.="WHERE ((categorias.Descri LIKE "INTERNACIONALES") OR (subcategorias.descri LIKE "INTERNACIONALES") OR (organizaciones.organizacion LIKE "INTERNACIONALES") OR (usuarios.nombre LIKE "INTERNACIONALES") OR (usuarios.apellidos LIKE "INTERNACIONALES") OR (usuarios.pais LIKE "INTERNACIONALES") OR (usuarios.ciudad LIKE "INTERNACIONALES") OR (usuarios.direccion LIKE "INTERNACIONALES") OR (usuarios.cargoL LIKE "INTERNACIONALES") OR (usuarios.fono1 LIKE "INTERNACIONALES") OR (usuarios.fono2 LIKE "INTERNACIONALES") OR (usuarios.fono3 LIKE "INTERNACIONALES") OR (usuarios.fonopart1 LIKE "INTERNACIONALES") OR (usuarios.fonopart2 LIKE "INTERNACIONALES"))"

Última edición por Cluster; 09/12/2005 a las 10:30
  #4 (permalink)  
Antiguo 09/12/2005, 10:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero donde exactamente te dá el error?

Coloreando el código como veras . .ahí aparece algo extraño .. el uso de comillas dobles cuando ya abristes tu cadena con comillas dobles.

Una de dos .. o las escapas o usas simples para ese caso:

Código PHP:
$busca="SELECT usuarios.IdUsuario, categorias.Descri, subcategorias.descri, organizaciones.organizacion, usuarios.nombre, usuarios.apellidos, usuarios.pais, usuarios.ciudad, usuarios.direccion, usuarios.cargoL, usuarios.fono1, usuarios.fono2, usuarios.fono3, usuarios.fonopart1, usuarios.fonopart2 "
$busca.="FROM organizaciones INNER JOIN (((usuarios INNER JOIN categorias ON usuarios.IdCategoria = categorias.IdCategoria) INNER JOIN subcategorias ON (usuarios.IdSubcategoria = subcategorias.IdSubcategoria) AND (categorias.IdCategoria = subcategorias.IdCategoria)) ON organizaciones.IdOrganizacion = usuarios.IdOrganizacion) "
$busca.="WHERE ((categorias.Descri LIKE 'INTERNACIONALES') OR (subcategorias.descri LIKE "INTERNACIONALES") OR (organizaciones.organizacion LIKE "INTERNACIONALES") OR (usuarios.nombre LIKE "INTERNACIONALES") OR (usuarios.apellidos LIKE "INTERNACIONALES") OR (usuarios.pais LIKE "INTERNACIONALES") OR (usuarios.ciudad LIKE "INTERNACIONALES") OR (usuarios.direccion LIKE "INTERNACIONALES") OR (usuarios.cargoL LIKE 'INTERNACIONALES') OR (usuarios.fono1 LIKE "INTERNACIONALES") OR (usuarios.fono2 LIKE "INTERNACIONALES") OR (usuarios.fono3 LIKE 'INTERNACIONALES') OR (usuarios.fonopart1 LIKE 'INTERNACIONALES') OR (usuarios.fonopart2 LIKE "INTERNACIONALES"))"
No cambié el código a todas .. hazlo con todas.

Por lo demás si tienes "variables" que llamar así .. usa más concatenación para evitar problemas

Código PHP:
$busca.="WHERE ((categorias.Descri LIKE '".$variable."') OR  ............."
Y si estás buscando "que tal campo sea igual a tal valor" no uses LIKE usa =
Código PHP:
$busca.="WHERE ((categorias.Descri = 'INTERNACIONAL' OR  ............."
(así con = se acelera la consulta SQL y se busca exactamente ese valor (no se distingue entre mayusculas y minusculas como LIKE .. LIKE es muy útil cuando usas comodines (wilcards) com '%palabra%' para decir "que contenga tal termino" .. o similares).

Un saludo,
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 17:04.