Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    Prepared statment, sintassi da usare per le date

    Ho un'applicazione php che dialogo con un db mysql
    Ho la seguenti query:

    Codice PHP:
    $query "SELECT id, cognome, nome, " .
                 
    "data_visita,  " .
                 
    "data_nascita, telefono " .
                 
    "FROM pazienti " 
                 
    "WHERE " .
                 
    "date_format(data_visita, '%Y-%m-%d') between ? AND ?";
        
        if (
    $stmt $mysqli->prepare($query)) {

            
    $stmt->bind_param("dd"$data_inizio$data_fine);

            
    $stmt -> execute();

            
    $stmt->bind_result($id$cognome$nome
                
    $data_visita_sql$id_appuntamento,
                
    $data_nascita_sql$telefono);

            while (
    $stmt->fetch()) {
    ecc... 
    Dove i parametri della query sono:
    data_inizio: 2010-02-08
    data_fine: 2010-02-12

    La query viene eseguita ma tira fuori tropi risultati, nel senso che mi tira fuori i pazienti sia compresi nelle date che ho scritto, sia quelli compresi nelle date che ho scritto ma del mese prima, cioè mi restituisce anche i pazienti compresi nelle date
    data_inizio: 2010-01-08
    data_fine: 2010-01-12

    secondo me sbaglio qualcosa nella sintassi della query, ma non vedo l'errore

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    volevo precisare che se non uso una prepared statment ma uso la sintassi normale, la query restituisce i risultati corretti, quindi se uso questa query:

    Codice PHP:
    "SELECT id, cognome, nome, " .
                 
    "data_visita,  " .
                 
    "data_nascita, telefono " .
                 
    "FROM pazienti " .
                 
    "WHERE " .
                 
    "date_format(data_visita, '%Y-%m-%d') between '$data_inizio' AND '$data_fine' "
    i risultati sono corretti
    quindi il problema risiede nella sintassi che sto usando per scrivere la prepared statement

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    In ogni caso non ha un gran senso usare una funzione di formattazione per fare un test.
    Prova ad eliminare il date_format e vedi cosa succede

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Originariamente inviato da luca200
    In ogni caso non ha un gran senso usare una funzione di formattazione per fare un test.
    Prova ad eliminare il date_format e vedi cosa succede
    luca200 non ho capito la tua risposta, se tolgo il comando date_format, come fa a funzionare la query?

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Perché non dovrebbe?

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.