Autor
|
Tema: error consulta a BBDD en PHP (Leído 6,783 veces)
|
miguelangelss4
Desconectado
Mensajes: 70
|
Hola amigos. A ver si me podéis echar un cable, tengo el siguiente fragmento de código: $sqlbuscar="SELECT IDE, col1, col2, col3, col4, col5" . " FROM tabla1 ". " WHERE col1= $_POST['dato1']"; Y la consulta me devuelve un error de sintaxis, nosé porqué. La intención es recojer los datos de un formulario para hacer un buscador. me interesan todas las columnas de esa tabla, y una columna (coln, por ejemplo) de otra tabla (tabla2) diferente con una relación N:M entre dichas tablas. ¿Alguien sabe como hacerlo? Google no me ha solucionado nada... :S
|
|
|
En línea
|
|
|
|
Spider-Net
Desconectado
Mensajes: 1.165
Un gran poder conlleva una gran responsabilidad
|
Has probado poniendo esto: $sqlbuscar="SELECT IDE, col1, col2, col3, col4, col5" . " FROM tabla1 ". " WHERE col1 LIKE %$_POST['dato1']%";
¿?¿?¿?
|
|
|
En línea
|
|
|
|
OzX
Desconectado
Mensajes: 406
[NuKe] Team
|
Parsear¡¡ $var = $_POST['dato1']; $var = htmlspecialchars($var, ENT_QUOTES) Si deseas un Resultado Esacto ¡ $sqlbuscar="SELECT+IDE,col1,col2, col3, col4, col5+FROM+tabla1+WHERE+col1=$var"; o con like segun dijo Spider-Net . sabes yo lo q ago es ver bien que pase los datos por post print_r($_POST['var'] ; Luego me voy al phpmyadmin en la parte de sql, y hay codeo la consulta, luego pongo parsear a php y shan esta lista, me evito "futuros" dramas, aunque talves me demore mas pero se que no va a tirar ningun problema Saludos brota¡
|
|
|
En línea
|
Undersecurity.net
|
|
|
miguelangelss4
Desconectado
Mensajes: 70
|
$sqlbuscar="SELECT IDE, col1, col2, col3, col4, col5" . " FROM tabla1 ". " WHERE col1 LIKE %$_POST['dato1']%"; eso tampoco funciona
|
|
|
En línea
|
|
|
|
SaXo
Desconectado
Mensajes: 166
|
Parece que le faltan las comillas en el valor del where.
WHERE x='afasdf'/WHERE x LIKE '%adfadf%'
|
|
|
En línea
|
|
|
|
^Tifa^
Desconectado
Mensajes: 2.804
|
Hasta que aparecio el sumamente cobarde de Saxo a responder... me extrana que no te enviase un privado insultandote y bloqueando tus respuestas para que no te defiendas porque el se echaria a llorar con tus palabras. No se porque no acaba de largarse del foro... Sobre tu pregunta de la relacion chico, puedes hacer algo parecido a esto : SELECT coln, tabla1.* FROM tabla1 INNER JOIN tabla2 ON col1 = $_POST['dato1']
Asi obtendras todos los registros como estas solicitando de la Tabla1 y solo la columna coln de la tabla2 filtrando por la columna de busquedad col1. Pero te anticipo que deberas filtrar por mas cosas porque si las otras columnas de la tabla1 tienen muchos registros ocurrira lo que se llama producto cartesiano.... a no ser que al final de la consulta uses LIMIT 1 o filtres con mas condiciones And col = tal cosa... que seria lo mas logico. En caso de que continues teniendo problemas de sintaxis, podrias especificar aca que error te da Mysql para saber si el error es o de tu codigo o de la consulta hacia Mysql en si.
|
|
« Última modificación: 2 Febrero 2009, 16:00 pm por ^TiFa^ »
|
En línea
|
|
|
|
miguelangelss4
Desconectado
Mensajes: 70
|
La búsqueda simple la he solucionado con la siguiente corrección: $sqlbuscar="SELECT IDE1, col1, col2, col3, col4, col5" . " FROM tabla1" . " WHERE Nombre = '" . $_POST["dato1"] . "'"; el inner join publicado por TiFa no lo entiendo... yo creo q tendré q cruzar tabla1 con tabla_relación (que contiene IDE1 e IDE2) y luego esa tabla con tabla2 q contiene, entre otros IDE2, y coln. Me interesa mostrar en los resultados de la búsqueda: col1, col2, col3, col4, col5 y coln.... NOTA DE ACLARACIÓN: Esto va a ser un buscador para mi web (un juego online de fútbol), y el buscador buscará jugadores, que se relacionan con la tabla de sus respectivos equipos mediante una tercera tabla de relación. GRACIAS a todos.
|
|
|
En línea
|
|
|
|
^Tifa^
Desconectado
Mensajes: 2.804
|
Mi amor, mi vida, excusame si coloque un INNER JOIN poco entendible.... es que he quedado frustrada con el examen de Sun de MySQL... vienen unos Joines bien comoditos de 3 y 4 tablas relacionadas entre si parecidos a ese que te postee.... Mira esto : SELECT coln, tabla1.* FROM tabla1 INNER JOIN tabla2 ON col1 = $_POST['dato1']
Es lo mismo que hicieras esto : SELECT b.coln, a.IDE, a.col1, a.col2, a.col3, a.col4, a.col5 FROM tabla1 a, tabla2 b WHERE col1 = $_POST['dato1']
lo que pasa es, que si haces : SELECT tabla1.* Estas diciendo en tu consulta, que selecciones todos los campos de la Tabla1 asi te evitas tener que haces uno a uno asi : SELECT IDE, col1, col2, col3, col4, col5... Entiendes???? Pero como todo es jerarquico, y es sabido que si vas a relacionar 2 tablas y algunos de sus registros no puedes hacer : SELECT * Porque incluiremos 2 tablas no 1, entonces le especificas a la consulta de que tabla quieres tomar todos los campos, en este caso Tabla1 SELECT tabla1.* Y hasta puedes indicarle en que base de datos esta tabla1... SELECT base_datos.tabla1.* Y igual es valido Ahora tu relacion es basada en 3 tablas??? porque dices que tabla1 y tabla_relacion contiene IDE1 y IDE2 y tabla2 contiene IDE2???? no entendi esa parte.... Pero para hacer tu relacion si fuesen 2 tablas , tabla1 y tabla2 seria algo asi: SELECT tabla1.*, tabla2.coln, tabla2.IDE2 from tabla1 INNER JOIN tabla2 ON tabla1.col1 = $_POST['dato1']; O Asi lo mas comun: SELECT a.IDE1, a.col1, a.col2, a.col3, a.col4, a.col5, b.col2, b.IDE2 from tabla1 a, tabla2 b WHERE a.col1 = $_POST['dato1']; Tienes muchisimas formas de hacer tu JOIN..... Espero haberme podido explicar bien
|
|
|
En línea
|
|
|
|
miguelangelss4
Desconectado
Mensajes: 70
|
si te has explicado perfectamente, gracias. a lo q me refiero esque tengo 3 tablas porque es una relacion N:M... no requerdo como son las tablas asique pongo aki 3 de ejemplo: TABLA1 (JUGAD) IDE_J NOM APE EDAD POS PIE LADO
TABLA2 (EQUIP) IDE_E NOM REP FON
Estas tablas, así puestas, no tienen relación entre ellas... pero aquí es donde entra la 3ª tabla:
TABLA3 (JUG_EQU) IDE_J IDE_E
y quiero una consulta que me de como resultado: de la tabla1: IDE_J NOM APE EDAD POS LADO de la tabla2: IDE_E NOM
a eso me refería con "tabla de relación", y no puedo reducirlo a 2 tablas, porque quiero hacer otras cosas (como poder consultar el historial de todos los equipos en los que ha estado un jugador) y no me dejaría con solo 2 tablas. Un saludo.
|
|
|
En línea
|
|
|
|
^Tifa^
Desconectado
Mensajes: 2.804
|
Corazon disculpame la imprudencia pero... sabes porque version de MySQL vamos ya??? por la 6.x alpha...
Y yo me pregunto, porque estas queriendo tu utilizar relacion de normalizacion muchos:muchos si ya existe metodos de relacion automatica con las llaves foreneas???? Y existen motores de almacenamientos transacionales para realizar este tipo de relaciones automaticas... tenemos a InnoDB, Falcon, SolidDB.... que realizan este tipo de relaciones mas controladas y automaticas.
Te digo esto porque, ese tipo de relacion que tu quieres utilizar, se utilizaba en Mysql 3.x y Mysql 4.x cuando era alpha... o sea cuando InnoDB aun era abstento a muchas fallas.... Pero ya desde MySQL 5.0 en adelante.. ha corrido mucha agua.
Mira lo que ocurre si insistes en hacer tu relacion de esa manera como quieres.
Tabla1 Tabla2 Tabla_Relacion.
Puedes hacer tus relaciones a manita, nadie te dice que no pero... ten muy pendiente que si lo realizas asi, tendras que tomar muy en cuenta la 'integridad referencial' o sea si deseas borrar un registro en cascada de la Tabla1 (que esté relacionado con la Tabla2) debes controlar tu mismo por médio de tu programación o algun disipador que automaticamente los cambios se apliquen a la Tabla relacionada a la Tabla1. haciendo las consultas y validaciones necesarias "a manita". Cuando puedes ahorrarte un monton de estas molestias relacionando tablas con llaves foraneas... que haran esto por ti automaticamente, actualizaran por ti automaticamente, evitaran a toda costa que se viole una llave foranea a la hora de querer eliminar un dato de una tabla Hijo.... Y como tu vas a controlar esa partecita del Eliminado 'accidental' a manita??? otro Disipador mas para que controle esto???
Hay no nino, la verdad no, yo te recomiendo de corazon, que hagas un ALTER a ambas tablas y las relaciones con una llave foranea en sus respectivos indices... Sino sabes como hacer esto, yo te ayudo. Pero deja de lado la normalizacion de referencia a manita, ya eso la verdad no aplica mucho actualmente.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Consulta SQL a BBDD de estadísticas de Fútbol o Baloncesto
Dudas Generales
|
chocola
|
0
|
1,721
|
1 Mayo 2014, 14:36 pm
por chocola
|
|
|
Como crear consulta a BBDD de PhpAdmin
PHP
|
elman1989
|
4
|
2,642
|
9 Noviembre 2014, 18:59 pm
por ivancea96
|
|
|
[DUDA] Error en ADO al poner un WHERE en la consulta
Programación Visual Basic
|
Psyke1
|
3
|
1,967
|
4 Febrero 2015, 16:23 pm
por seba123neo
|
|
|
(Consulta)Error al unir 2 arreglos
Programación C/C++
|
palacio29
|
0
|
1,681
|
29 Noviembre 2016, 15:56 pm
por palacio29
|
|
|
CONSULTA DE PRINCIPIANTE POR ERROR WIN32
GNU/Linux
|
mate23
|
1
|
6,407
|
18 Febrero 2024, 19:12 pm
por TickTack
|
|