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

    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

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.