Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Effettuare più query contemporaneamente

    Salve a tutti, ho la necessità di effettuare più query contemporaneamente sulla stessa tabella.

    Questo è il codice dello script che sto relaizzando:

    codice:
    <?php
    include ("config.php");
    $player = $_GET['p'];
    
    $connect = mysql_connect($host, $user , $pass);
    mysql_select_db($database) or die(mysql_error());
    
    $sql = "SELECT talents1, talents2 FROM characters WHERE name LIKE '$player'";
    
    $result = mysql_query($sql) or die(mysql_error());
    $out = mysql_fetch_row($result);
    $talents1 = $out['0'];
    $talents2 = $out['1'];
    
    $t1 = (explode(",",$talents1));
    
    $sql0 = "SELECT pos FROM talents WHERE talentid = $t1[0]"; 
    $result0 = mysql_query($sql0) or die(mysql_error());
    $pos0 = mysql_fetch_row($result0);
    
    $sql0 = "SELECT pos FROM talents WHERE talentid = $t1[2]"; 
    $result0 = mysql_query($sql0) or die(mysql_error());
    $pos1 = mysql_fetch_row($result0);
    
    $sql0 = "SELECT pos FROM talents WHERE talentid = $t1[4]"; 
    $result0 = mysql_query($sql0) or die(mysql_error());
    $pos2 = mysql_fetch_row($result0);
    Come potete benissimo vedere ci sono 3 query di seguito (sql0)
    Funziona perfettamente, ma siccome lo script che sto relizzando e abbastanza complesso e richiede davvero molti dati dal database, in questo modo dovrei effettuare più di 80 query consecutive. Quindi vorrei effettuarne una sola e specificare le varie clausole.

    Queste query sono pressochè identiche, perchè controllano lo stesso campo della stessa tabella, solamente con una condizione diversa.

    Io dovrei riuscire ad estrarre, sotto forma di array tutti i dati nella colonna 'pos' dove 'talentid' corrisponde a '$t1[0]' oppure '$t1[2]' oppure '$t1[4]' etc..

    Ho provato ad utilizzare OR nella query, però quando cerco di stampare su schermo gli array, mi dice che il secondo e terzo indice dell'array non è definito, non so perchè ma mi prende solo e sempre la prima clausola e mi restituisce solo quella.

    Premetto che la parte iniziale dello script funziona e le variabili sono tutte definite, e il database è popolato correttamente per rendere vere le varie clausole.

    Un grazie in anticipo a chi mi può aiutare.

  2. #2
    Devi "ciclare" la prima query :

    Codice PHP:

    include ("config.php");
    $player $_GET['p'];

    $connect mysql_connect($host$user $pass);
    mysql_select_db($database) or die(mysql_error());

    $sql "SELECT talents1, talents2 FROM characters WHERE name LIKE '$player'";

    $result mysql_query($sql) or die(mysql_error());
    $out mysql_fetch_row($result);

    foreach (
    $out AS $key) {
         
    $talent $out[$out];
         
    $t = (explode(",",$talents));
         
    //query ripetuta
         
    $sql0 "SELECT pos FROM talents WHERE talentid = $t"
         
    $result0 mysql_query($sql0) or die(mysql_error());
         
    $pos0 mysql_fetch_row($result0);

    ...il passato lo rimpiange chi non ha futuro...
    Lega LFA | Alessio Corse | a2area

  3. #3
    o, MOLTO meglio, ristrutturare il database cosi da non avere in un campo i valori separati da virgola ma una riga per valore e poi usare le join

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.