Foros del Web » Programando para Internet » PHP »

2 tablas login sin relacion

Estas en el tema de 2 tablas login sin relacion en el foro de PHP en Foros del Web. hola grupo a ver si me dan una ayuda, necesito unir dos tablas que no tiene relacion pero cada tabla si tiene un mismo nombre ...
  #1 (permalink)  
Antiguo 12/07/2021, 23:03
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
2 tablas login sin relacion

hola grupo a ver si me dan una ayuda, necesito unir dos tablas que no tiene relacion
pero cada tabla si tiene un mismo nombre de logeo que es el "correo"
como podria solucionarse para que en un formulario haga login en la tabla1 o tabla2

esto funciona con una sola tabla.
Código MySQL:
Ver original
  1. $query = $conn->query("SELECT * FROM loginuno WHERE correo='$correo'");
  2. if ($query->num_rows > 0) {

Si uso esto da el siguente error (Notice: Trying to get property 'num_rows' of non-object)
Código MySQL:
Ver original
  1. $query = $conn->query("SELECT * FROM loginuno CROSS JOIN logindos WHERE loginuno.correo='$correo', logindos.correo='$correo'");
  2. if ($query->num_rows > 0) {

si uso de este modo ya no hay error, pero no logea
Código MySQL:
Ver original
  1. $query = $conn->query("SELECT * FROM loginuno CROSS JOIN logindos WHERE loginuno.correo='$correo' AND logindos.correo='$correo'");
  2. if ($query->num_rows > 0) {
  #2 (permalink)  
Antiguo 13/07/2021, 03:27
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 3 meses
Puntos: 13
Respuesta: 2 tablas login sin relacion

Info

https://dev.mysql.com/doc/refman/8.0...variables.html

Sospecho que el arroba le esta jugando una mala pasada

mysql tiene alcance de sesión, usar un arroba dentro de una consulta,
puede que este generando el error.
Tiene que ver el tipo de campo tambien al que se esta consultando, si es vachar, hay un problema.

Observe que se esta enviando como valor de consulta un arroba y esto mysql lo interpreta
como @variable, las variables comenzadas con arroba son variables de tipificación libre, que pueden inicializarse
en algún momento de una sesión y mantener su valor hasta el final de la misma.

por definición se preparan con @ y firmadas así @variable se pueden iniciar en un SET o dentro de una consulta,
por lo que si usted esta enviando
Código PHP:
Ver original
  1. $correo =alguncorreo@gmail.com
, puede estar interpretando
Código PHP:
Ver original
  1. @gmail.com
como variable.
Resumiendo:
En mysql, @variable indica una variable definida por el usuario.
El alcance de esta variable es la totalidad de la sesión. Eso significa que mientras exista su conexión con la base de datos, la variable puede seguir siendo utilizada, es bueno para ciertas ocasiones y no para otras :(
en su caso no es el modo, y sospecho que esto le esta ocurriendo, para saberlo imprima los errores,
si imprime:

Código PHP:
You have an error in your SQL syntax;....near '@uncorreodemo.com'... 
es problema de su método de consulta y se esta interpretando @uncorreodemo como variable definida por usted.

Probemos

Código PHP:
creo dos tablas :

CREATE TABLE `loginuno` (
  `
idint(10unsigned NOT NULL auto_increment,
  `
correovarchar(60NOT NULL,
  `
namevarchar(32NOT NULL,
  
PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE 
`logindos` (
  `
idint(10unsigned NOT NULL auto_increment,
  `
correovarchar(60NOT NULL,
  `
namevarchar(32NOT NULL,
  
PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8


INSERT INTO 
`logindos` (`id`, `correo`, `name`) VALUES
(1'[email protected]''walter');

INSERT INTO `loginuno` (`id`, `correo`, `name`) VALUES
(1'[email protected]''hola walter'); 
GENERAMOS ERROR ARROBA

Código PHP:
$correo '[email protected]';

$sql "SELECT *
  FROM loginuno left_tbl LEFT JOIN logindos right_tbl ON left_tbl.correo = right_tbl.correo
  WHERE right_tbl.correo ="
.$correo;

$result $mysqli->query($sql);

if (!
$result) {
    echo 
$mysqli->error;
}

/**
imprime

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@hotmail.com' at line 3

*/ 
VAMOS A HACER UNA CONSULTA CORRECTA

Código PHP:
$id '1';

/** relizamos una consulta razonable */
$sql "SELECT *
  FROM loginuno left_tbl LEFT JOIN logindos right_tbl ON left_tbl.id = right_tbl.id
  WHERE right_tbl.id ="
.(int)$id;

$result $mysqli->query($sql);

if (!
$result) {
    echo 
$mysqli->error;
} else {
    
$algo $result->fetch_assoc();
   
// print_r($algo); /** IMPRIME ARRAY COMPLETO */
    
echo $algo['correo']; /** IMPRIME EL CORREO [email protected] */

EN FIN, PUEDE QUE LE SEA DE AYUDA
LECTURA RECOMENDADA

https://dev.mysql.com/doc/refman/8.0...variables.html

y como siempre RTFM

https://es.wikipedia.org/wiki/RTFM

saludos
__________________
Es duro fracasar en algo, pero es mucho peor no haberlo intentado. - Si crees todo lo que lees, mejor no leas -

Última edición por zerpico_01; 13/07/2021 a las 03:35
  #3 (permalink)  
Antiguo 13/07/2021, 12:38
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: 2 tablas login sin relacion

Cita:
Iniciado por zerpico_01 Ver Mensaje
Info

https://dev.mysql.com/doc/refman/8.0...variables.html

Sospecho que el arroba le esta jugando una mala pasada

mysql tiene alcance de sesión, usar un arroba dentro de una consulta,
puede que este generando el error.
Tiene que ver el tipo de campo tambien al que se esta consultando, si es vachar, hay un problema.

Observe que se esta enviando como valor de consulta un arroba y esto mysql lo interpreta
como @variable, las variables comenzadas con arroba son variables de tipificación libre, que pueden inicializarse
en algún momento de una sesión y mantener su valor hasta el final de la misma.

por definición se preparan con @ y firmadas así @variable se pueden iniciar en un SET o dentro de una consulta,
por lo que si usted esta enviando
Código PHP:
Ver original
  1. $correo =alguncorreo@gmail.com
, puede estar interpretando
Código PHP:
Ver original
  1. @gmail.com
como variable.
Resumiendo:
En mysql, @variable indica una variable definida por el usuario.
El alcance de esta variable es la totalidad de la sesión. Eso significa que mientras exista su conexión con la base de datos, la variable puede seguir siendo utilizada, es bueno para ciertas ocasiones y no para otras :(
en su caso no es el modo, y sospecho que esto le esta ocurriendo, para saberlo imprima los errores,
si imprime:

Código PHP:
You have an error in your SQL syntax;....near '@uncorreodemo.com'... 
es problema de su método de consulta y se esta interpretando @uncorreodemo como variable definida por usted.

Probemos

Código PHP:
creo dos tablas :

CREATE TABLE `loginuno` (
  `
idint(10unsigned NOT NULL auto_increment,
  `
correovarchar(60NOT NULL,
  `
namevarchar(32NOT NULL,
  
PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE 
`logindos` (
  `
idint(10unsigned NOT NULL auto_increment,
  `
correovarchar(60NOT NULL,
  `
namevarchar(32NOT NULL,
  
PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8


INSERT INTO 
`logindos` (`id`, `correo`, `name`) VALUES
(1'[email protected]''walter');

INSERT INTO `loginuno` (`id`, `correo`, `name`) VALUES
(1'[email protected]''hola walter'); 
GENERAMOS ERROR ARROBA

Código PHP:
$correo '[email protected]';

$sql "SELECT *
  FROM loginuno left_tbl LEFT JOIN logindos right_tbl ON left_tbl.correo = right_tbl.correo
  WHERE right_tbl.correo ="
.$correo;

$result $mysqli->query($sql);

if (!
$result) {
    echo 
$mysqli->error;
}

/**
imprime

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@hotmail.com' at line 3

*/ 
VAMOS A HACER UNA CONSULTA CORRECTA

Código PHP:
$id '1';

/** relizamos una consulta razonable */
$sql "SELECT *
  FROM loginuno left_tbl LEFT JOIN logindos right_tbl ON left_tbl.id = right_tbl.id
  WHERE right_tbl.id ="
.(int)$id;

$result $mysqli->query($sql);

if (!
$result) {
    echo 
$mysqli->error;
} else {
    
$algo $result->fetch_assoc();
   
// print_r($algo); /** IMPRIME ARRAY COMPLETO */
    
echo $algo['correo']; /** IMPRIME EL CORREO [email protected] */

EN FIN, PUEDE QUE LE SEA DE AYUDA
LECTURA RECOMENDADA

https://dev.mysql.com/doc/refman/8.0...variables.html

y como siempre RTFM

https://es.wikipedia.org/wiki/RTFM

saludos


Hola amigo, muchas gracias por la orientación, pero
no entendí mucho el tema.. pero probé tu ejemplo y me sale el mismo error.
no sabia que se podía hacer un LEFT JOIN o INNER JOIN etc.. de igual no funciona.

la solución seria que crear dos login1.php login2.php al saber que no existe método alguno supongo





Código PHP:
Ver original
  1. $id = '1';  //  ESTO NO ENTIENDO PORQUE ESTA ALLI
  2.  
  3. /** relizamos una consulta razonable */
  4. $sql = "SELECT *
  5.  FROM loginuno left_tbl
  6.  LEFT JOIN logindos right_tbl ON left_tbl.correo = right_tbl.correo
  7.  WHERE right_tbl.correo =".$correo;

Error
Notice: Trying to get property 'num_rows' of non-object
  #4 (permalink)  
Antiguo 13/07/2021, 13:18
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 3 meses
Puntos: 13
Respuesta: 2 tablas login sin relacion

Bien vamos despacio por que no veo bien y francamente no quiero nuevoS lentes jaja

Debe leer:

https://www.php.net/manual/es/mysqli.query.php

Código PHP:
Ver original
  1. Retorna FALSE en caso de error. Si una consulta del tipo SELECT, SHOW,
  2. ESCRIBE o EXPLAIN es exitosa, mysqli_query()
  3. retornará un objeto mysqli_result. Para otras consultas exitosas de mysqli_query() retornará TRUE.
si no evalúa el resultado de la consulta que desea obtener con el método query de mysqli obtiene este aviso:

Código PHP:
Ver original
  1. Trying to get property of non-object

Significa que "$query" no es un objeto mysqli_result, debido a que la
consulta no fue exitosa y por tanto no puede realizar la llamada al método num_rows.

Dar con la falla en la consulta es tedioso de la forma que lo hace, pues puede ser muchas
- una coma antes del FROM.... Pero ese no es el único fallo posible en una consulta que puede ocasionar el problema.
Cuando emplee este tipo de objetos debe escribir un código que evalúe los objetos e imprima los errores de la falla y así saber por qué ha fallado.

la variable $id del ejemplo que puse es para realizar la consulta por id de usuario en las tablas loginuno y logindos, son solo para ejemplo obvio, si va usar algo así no use auto incremento, pero ese es otro tema.

le demostré con ejemplos que se puede obtener resultados con una consulta por id y no por email del usuario. Por qué, pues no puede enviar una consulta con ARROBA!!
si envía
Código PHP:
Ver original
  1. algo@google.com
va ser interpretado como
Código PHP:
Ver original
  1. @google.com
, será una variable para mysql.

debe buscar otra forma de obtener los datos, por ejemplo nombre usuario o id.

no use arroba para obtener un resultado. Puede consultar con otro parámetro y obtener resultado USE ARROBA


SALUDOS
__________________
Es duro fracasar en algo, pero es mucho peor no haberlo intentado. - Si crees todo lo que lees, mejor no leas -
  #5 (permalink)  
Antiguo 13/07/2021, 16:41
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: 2 tablas login sin relacion

Cita:
Iniciado por zerpico_01 Ver Mensaje
Bien vamos despacio por que no veo bien y francamente no quiero nuevoS lentes jaja

Debe leer:

https://www.php.net/manual/es/mysqli.query.php

Código PHP:
Ver original
  1. Retorna FALSE en caso de error. Si una consulta del tipo SELECT, SHOW,
  2. ESCRIBE o EXPLAIN es exitosa, mysqli_query()
  3. retornará un objeto mysqli_result. Para otras consultas exitosas de mysqli_query() retornará TRUE.
si no evalúa el resultado de la consulta que desea obtener con el método query de mysqli obtiene este aviso:

Código PHP:
Ver original
  1. Trying to get property of non-object

Significa que "$query" no es un objeto mysqli_result, debido a que la
consulta no fue exitosa y por tanto no puede realizar la llamada al método num_rows.

Dar con la falla en la consulta es tedioso de la forma que lo hace, pues puede ser muchas
- una coma antes del FROM.... Pero ese no es el único fallo posible en una consulta que puede ocasionar el problema.
Cuando emplee este tipo de objetos debe escribir un código que evalúe los objetos e imprima los errores de la falla y así saber por qué ha fallado.

la variable $id del ejemplo que puse es para realizar la consulta por id de usuario en las tablas loginuno y logindos, son solo para ejemplo obvio, si va usar algo así no use auto incremento, pero ese es otro tema.

le demostré con ejemplos que se puede obtener resultados con una consulta por id y no por email del usuario. Por qué, pues no puede enviar una consulta con ARROBA!!
si envía
Código PHP:
Ver original
  1. algo@google.com
va ser interpretado como
Código PHP:
Ver original
  1. @google.com
, será una variable para mysql.

debe buscar otra forma de obtener los datos, por ejemplo nombre usuario o id.

no use arroba para obtener un resultado. Puede consultar con otro parámetro y obtener resultado USE ARROBA


SALUDOS
ok amigo gracias, eso que el login es por correo y contraseña ambas tablas tienen el campo del mismo nombre.
entonces la solución seria crear un login1.php y login2.php para que se pueda logear por diferentes tablas.

Etiquetas: mysql
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 19:06.