Stack Overflow en español Asked on December 4, 2021
Tengo el siguiente codigo, con el que llamo a una tabla desde MySQL, y la filtro.
$query = "SELECT * FROM jugadores";
if (isset($_POST['consulta'])) {
$q = $conn->real_escape_string($_POST['consulta']);
$query = "SELECT * FROM jugadores WHERE Id_no LIKE '%$q%' OR Name LIKE '%$q%' OR camisa.Number LIKE '$q' ";
}
Pero al hacer el llamado de la variable "Number", al ser una columna de una tabla conectada por llave foranea, me arroja error enesta parte del codigo.
while ($fila = $resultado->fetch_assoc()){
$valor = random_int($min, $max);
// Ejecuta la consulta para actualizar
$conn->query("UPDATE jugadores SET number = $valor WHERE Id_no = {$fila['Id_no']}");
$salida.="<tr>
<td>".$fila['Id_no']."</td>
<td>".$fila['Name']."</td>
<td>".$fila['Number']."</td> //AQUI ESTA MI PROBLEMA
</tr>
}
El error se arroja porque no se hace bien la referencia a la columna de una tabla con llave foranea, como debe llamarse en .$fila[], una columna de una tabla conectada con llave?
Tabla Jugdaores
id_jugadores (PK)
Name
Club
Age
Tabla Camisa
id_camisa (FK)
Number
Color
Lo solucione! En el primer query se hace el JOIN para enlazar las tablas a utilizar, es decir:
$query = "SELECT * FROM jugadores JOIN camisa ON jugadores.PK = camisa.FK";
Para luego dentro del "if" hacer la selección de los datos o columnas que se desea trabajar:
if (isset($_POST['consulta'])) {
$q = $conn->real_escape_string($_POST['consulta']);
$query = "SELECT j.*, c.*
FROM jugadores j, camisa c";
}
De esa forma, al darle forma a la tabla, se puede llamar por el método .$fila[] a la columna "Number", y así insertarla en la tabla mostrada por web.
Answered by Vikingo22 on December 4, 2021
No existe una manera en SQL estandar de acceder a un campo de clave foranea directamente a menos que hagas la relacion con algun join usando el campo clave relacionado de ambas tablas (ej: CAMPO_PK de la tabla camisa y CAMPO_FK de la tabla jugadores).
$query = "SELECT jugadores.*, camisa.Number FROM jugadores
JOIN camisa ON camisa.CAMPO_PK=jugadores.CAMPO_FK
WHERE jugadores.Id_no LIKE '%$q%' OR jugadores.Name LIKE '%$q%' OR camisa.Number LIKE '$q' ";
Answered by F.Igor on December 4, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP