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

    Query MYSQL poco chiara...aiuto vi prego !

    ciao a tutti ... volevo chiedervi un aiuto su questa query MYSQL.
    Piu che altro vorrei avere una spiegazione chiara perche non riesco a capire l' utilita.
    Secondo un manuale da cui sto studiando, in questo capitolo, preferisce utilizzare le query in questa maniera. Vi riporto il codice.

    Non capisco perchè inizializza le query $select $from $where;
    Per esempio $where .= ' AND authorid = :authorid';

    anche perche la query non sarebbe incompleta iniziando con il WHERE ?
    grazie in anticipo


    codice:
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8">
        <title>Manage Authors</title>
      </head>
      <body>
        <h1>Gestione Autori</h1
    
    
        <?php include $_SERVER['DOCUMENT_ROOT'] . '/FILE_MAGIC/conn2.php'; 
        
        try{
        $autori = 'SELECT id,name from author';
        $esegui_autori = $pdo->query($autori);
        }
        catch(PDOException $e)
        {
        $errore = 'Errore selezione valori da tabella autori : ' . $e->getMessage();
        include 'errore.php';
        exit();
        }
        
        foreach($esegui_autori as $row)
        {
        $autori_[] = array('id'=>$row['id'], 'name'=>$row['name']);    
        }
        
        try{
        $categorie = 'SELECT id,name from category';
        $esegui_categorie = $pdo->query($categorie);
        }
        catch(PDOException $e)
        {
        $errore = 'Errore selezione valori da tabella categoria : ' . $e->getMessage();
        include 'errore.php';
        exit();
        }
        
        foreach($esegui_categorie as $row)
        {
        $categorie_[] = array('id'=>$row['id'], 'name'=>$row['name']);    
        }
        
        include 'form_cerca.php';
        
        if(isset($_GET['action']) and $_GET['action'] == 'search')
        {
        $select = 'SELECT id,joketext';
        $from = ' FROM joke';
        $where = ' WHERE TRUE';
        
        $memorizza = array();
        
        if($_GET['author_select'] != '')// se è stato selezionato un autore
        {    
        $where .= ' AND authorid = :authorid';
        $memorizza[':authorid'] = $_GET['author_select'];
        }
        
        if($_GET['category_select'] != '')// se è stato selezionato un autore
        { 
        $from .= ' INNER JOIN jokecategory ON id = jokeid';     
        $where .= ' AND categoryid = :categoryid';
        $memorizza[':categoryid'] = $_GET['category_select'];
        }
          
        if($_GET['text'] != '')// se è stato selezionato un autore
        { 
        $where .= ' AND joketext LIKE :joketext';
        $memorizza[':joketext'] = '%' . $_GET['text'] . '%';
        }
    
    
        try{
        $sql_concatenata = $select . $from . $where; 
        $esegui = $pdo->prepare($sql_concatenata);
        $esegui->execute($memorizza);
        }
        catch (PDOException $e)
        {
        $errore = 'ERRORE!!!!!!!!' . $e->getMessage();
        include 'errore.php';
        exit();
        }   
        }
        
        foreach($esegui as $row)
        {
        $visualizza[] = array('id'=>$row['id'], 'text'=>$row['joketext']);    
        }
        include 'form_joke.php';
        ?>

  2. #2
    Quote Originariamente inviata da emi10 Visualizza il messaggio
    ...anche perche la query non sarebbe incompleta iniziando con il WHERE ?


    codice:
    ...
        $sql_concatenata = $select . $from . $where; 
    ...

    Mai sentito parlare di concatenazione di stringhe?

    Comunque non sta facendo altro che creare dinamicamente una query!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Si quello l ho capito.
    Non capisco perché parte dal where nella query precedente

  4. #4
    Quote Originariamente inviata da emi10 Visualizza il messaggio
    Si quello l ho capito.
    Non capisco perché parte dal where nella query precedente
    Mi sa che non l'hai capito proprio invece!

    Se tu guardassi la parte di codice che ti ho quotato noteresti che alla fine concatena le varie parti a formare una query.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    ok scusa...

    adesso è chiaro ....

    grazie mille

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.