Visualizzazione dei risultati da 1 a 4 su 4

Discussione: query PDO annidata

  1. #1
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489

    query PDO annidata

    Buongiorno a tutti,
    ho un problema con delle query.
    Cerco di costruire una query con all'interno di while() un'altra query. Non l'ho mai provato e ho pensato che potesse funzionare, ma invece tutto il costrutto si ferma alla prima riga della prima query e della seconda query annidata. ho provato a scrivere il codice il più semplice possibile , ma niente! Mi spiego con un esempio:
    Codice PHP:
    #prima query
    try
        {
            
    $sql="SELECT col1, col2, col3 
            FROM tabella1
            where col4=:num
            order by col3"
    ;
            
    $s=$pdo->prepare($sql);
            
    $s->bindValue(':num'numero );
            
    $s->execute();        
        }catch(
    PDOException $e)
                {
                
    $header="oooops.... ";
                
    $msg  ="query errata per cercare i dati... : " $e->getMessage() ." in file: ".$e->getFile() ." in line: "$e->getLine();
            include 
    'errore.html.php';
                exit();
                }
        
    $i=0;        
        while(
    $rows=$s->fetch())
        {
        
        
    $tabella2[]=$rows['col3']; //tale valore è il nome di diverse tabelle dalle quali vorrei prendere dei dati;
        
    $array1[]=array('val1'=>$rows['col1'],'val2'=>$rows['col2'],'val3'=>$rows['col3']);


        
    #query nested
            
    try
                {
                
    $sql="select col5, col6, col7, col8, col9  
                from "
    $tabella2[$i] . 
                inner join tabella3 on "
    .$tabella2[$i].".id=tabella3.id
                        
                where "
    .$tabella2[$i]. ".col10=:idN";
                    
    $s=$pdo->prepare($sql);
                    
    $s->bindValue(':idN',numero );
                    
    $s->execute();
                
                }catch(
    PDOException $e)
                    {
                        
    $header="oooops.... ";
                        
    $msg  ="query errata per cercare i dati nel nido... : " $e->getMessage() ." in file: ".$e->getFile() ." in line: "$e->getLine();
                        include 
    'errore.html.php';
                        exit();
                    }
                        
                    while(
    $row=$s->fetch())
                            {
                                
    $array2[$i][]=array('val4'=>$row['col5'], 'val4'=>$row['col6'], 'val6'=>$row['col7'],'val7'=>$row['col8'],'val8'=>$row['col9']);
                            }
        
    $i++;
        } 
    non riesco a capire perchè. che ne pensate?

  2. #2
    se non riesci a costruire le query, credo che il problema vada visto nel forum PHP

  3. #3
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    Quote Originariamente inviata da optime Visualizza il messaggio
    se non riesci a costruire le query, credo che il problema vada visto nel forum PHP
    Grazie, emigro

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    tutto il costrutto si ferma alla prima riga della prima query e della seconda query annidata
    stai usando lo stesso puntatore $s per entrambe le query,
    $s della seconda query distrugge il precedente,
    dovresti usare nomi diversi per distinguere i due puntatori

    ps, non ho guardato altro

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.