TransWikia.com

Ayuda con parametros de funcion PHP

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

2 Answers

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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP