Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    88

    QUERY non funziona più nel passaggio da php 7.4 a php 8.2

    Buonasera,

    sono dovuto passare da php 7.4 a php 8.2 e sto avendo dei problemi con delle query che estraggono un solo elemento da una tabella. Purtroppo ne ho tante e prima di modificarle tutte vorrei capire se posso risolvere diversamente. Ho postato il codice che ho sempre usato (che ora non funziona più) ed il codice alternativo che funziona.

    codice:
    $nota_id = "10";
    
    // funzionava con php 7.4 ma con php 8.2 non funziona più
    $stmt_note = $connection->prepare("SELECT * FROM tbl_ASSISTENZE_note WHERE id = '".$nota_id."'");
    $stmt_note->execute(array(':nota_id' => $nota_id));
    $data_note = $stmt_note->fetch(PDO::FETCH_ASSOC);
    
    
    $note = $data_note ['note'];
    $mese = $data_note ['mese'];
            
    
    
    // metodo alternativo funzionante con php 8.2
    try {
        $data_note = $connection->query("SELECT * FROM tbl_ASSISTENZE_note WHERE id = '".$nota_id."'")->fetchAll();
    } catch (PDOException $e) {    
        print_r ("<pre align='center'><font color='".$array_colori['msg_ERRORE']."'><b>"."ERRORE: impossibile connettersi al database ".$database." - " . $e->getMessage()."</b></font>\r\n"."</pre>");
    }
            
    foreach ($data_note as $row) {
        $note = $row['note'];
        $mese = $row['mese'];
    }
    questo è l'errore restituito: Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in...

    questo è il rigo che dà problemi: $stmt_note->execute(array(':nota_id' => $nota_id));

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Boh, a me pare strano che funzionasse prima: nella query (php 7.4) NON hai nessun parametro "nota_id" (e nemmeno in quella php 8.2)

    codice:
    "SELECT * FROM tbl_ASSISTENZE_note WHERE id = '".$nota_id."'"
    ma lo stai settando lo stesso alla riga successiva:

    codice:
    $stmt_note->execute(array(':nota_id' => $nota_id));
    Sei sicuro di non aver combinato qualcosa a livello di sorgenti?
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2022
    Messaggi
    88
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Boh, a me pare strano che funzionasse prima: nella query (php 7.4) NON hai nessun parametro "nota_id" (e nemmeno in quella php 8.2)
    Prima funzionava, anche perché ne ho diverse. Da quello che ho letto in rete (è capitato anche a qualcun altro nel passare dal 7.4 all'8.1), sembra che il codice non era scritto in modo corretto, però con il 7.4 l'errore non bloccava l'esecuzione dello script, mentre con l'8.1 si.

    Ho risolto in questo modo:

    codice:
    $stmt_edit = $connection->prepare("SELECT * FROM tbl_ASSISTENZE_note WHERE id=?");
    		$stmt_edit->execute([$nota_id]);
    		$data_edit = $stmt_edit->fetch();

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.