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

    PDO: Prepared statements e clausole LIMIT,OFFSET

    Ciao a tutti, un altro problema che mi fa arrovellare:
    Ma è normale che i placeholders "?" nei prepared statements sql in PDO non possano essere usati se non per rappresentare il valore di un campo? Ovvero è normale che non funzionino se usati così:

    codice:
    SELECT * FROM miatabella LIMIT ?, ?
    A me sembra assurdo, ma se li uso nelle clausole WHERE dopo "=" oppure per inserire valori funzionano!

    A che diamine servono allora??? (a quasi niente mi pare)


    grazie in anticipo.


    ECCO qui la conferma che non funzionano lì:
    http://bugs.php.net/bug.php?id=35801&edit=1

    Ma allora ditemi perchè diamine hanno messo una funzione così inutile!!...mah!


    ciao,
    jack.

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Le prepared statements servono ad ottimizzare le query analizzandole prima che vengano lanciate. In particolare, se lanci più volte una stessa query cambiando solo i parametri di input, l'analisi viene fatta una volta sola, con notevole risparmio di risorse.

    Però per potere fare questa analisi il database deve capire che cosa vuol fare esattamente la query. Quindi l'unica parte variabile possono essere i dati da confrontare con i valori delle colonne.
    In sostanza, la prepared statement non è una stringa qualsiasi nella quale puoi mettere le variabili dove pare a te.

  3. #3
    sì ecco, servono solo per inserimenti ripetuti, cioè la minor parte delle volte che si fa una query.

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Solo per inserimenti? E perché mai?

  5. #5
    QUale codice uso?

    Codice PHP:
             $stpdo $page->db->prepare($sql);
             
    $stpdo->execute(); 
             
    $rep $stpdo->fetchAll(); 
    Codice PHP:
             $rep $page->db->query($sql)->fetchAll(); 
    Ha senso usare prepare anche se la query è impostata da me e non viene da un input di un utente, quindi senza rischio di sql injections?

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.