简体   繁体   中英

Fatal error: Uncaught PDOException: SQLSTATE[HY093]

I get this error message on line 242:

Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens on line 242

PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined on line 242

global $db, $id;

$malattiaPastNome = $_POST['malattia_past_nome'];
$malattiaPastDataInizio = $_POST['malattia_past_data_inizio'];
$malattiaPastDataFine = $_POST['malattia_past_data_fine'];
$malattiaPresentiNome = $_POST['malattia_presenti_nome'];
$interventiTraumi = $_REQUEST['interventi_traumi'];
$interventiTraumiAltro = $_POST['interventi_traumi_altro'];
$interventiTraumiData = $_POST['interventi_traumi_data'];
$sintomiAttualiNome = $_REQUEST['sintomi_attuali_nome'];
$sintomiAttualiNomeAltro = $_POST['sintomi_attuali_nome_altro'];
$sintomiAttualiFrequenza = $_REQUEST['sintomi_attuali_frequenza'];
$sintomiAttualiDurata = $_REQUEST['sintomi_attuali_durata'];
$sintomiAttualiIntensita = $_REQUEST['sintomi_attuali_intensita'];
$alimQuotidColazione = $_REQUEST['alim_quotid_colazione'];
$alimQuotidColazioneBevande = $_REQUEST['alim_quotid_colazione_bevande'];
$alimQuotidColazioneAlimenti = $_REQUEST['alim_quotid_colazione_alimenti'];
$alimQuotidMerenda = $_REQUEST['alim_quotid_merenda'];
$alimQuotidMerendaBevande = $_REQUEST['alim_quotid_merenda_bevande'];
$alimQuotidMerendaAlimenti = $_REQUEST['alim_quotid_merenda_alimenti'];
$alimQuotidPranzo = $_REQUEST['alim_quotid_pranzo'];
$alimQuotidPranzoBevande = $_REQUEST['alim_quotid_pranzo_bevande'];
$alimQuotidPranzoAlimenti = $_REQUEST['alim_quotid_pranzo_alimenti'];
$alimQuotidPomeridiano = $_REQUEST['alim_quotid_pomeridiano'];
$alimQuotidPomeridianoBevande = $_REQUEST['alim_quotid_pomeridiano_bevande'];
$alimQuotidPomeridianoAlimenti = $_REQUEST['alim_quotid_pomeridiano_alimenti'];
$alimQuotidCena = $_REQUEST['alim_quotid_cena'];
$alimQuotidCenaBevande = $_REQUEST['alim_quotid_cena_bevande'];
$alimQuotidCenaAlimenti = $_POST['alim_quotid_cena_alimenti']; 

 $sql = 'UPDATE utenti2 SET malattia_past_nome=:past_nome, malattia_past_data_inizio=:past_dataInizio, malattia_past_data_fine=:past_data_fine, malattia_presenti_nome=:presenti_nome, interventi_traumi=:interventi_traumi, interventi_traumi_altro=:traumi_altro, interventi_traumi_data=:traumi_data, sintomi_attuali_nome=:attuali_nome, sintomi_attuali_nome_altro=:attuali_nome_altro, sintomi_attuali_frequenza=:attuali_frequenza, sintomi_attuali_durata=:attuali_durata, sintomi_attuali_intensita=:attuali_intensita, alim_quotid_colazione=:colazione, alim_quotid_colazione_bevande=:colazioe_bevande, alim_quotid_colazione_alimenti=:colazione_alimenti, alim_quotid_merenda=:merenda, alim_quotid_merenda_bevande=:merenda_bevande, alim_quotid_merenda_alimenti=:merenda_alimenti, alim_quotid_pranzo=:_pranzo, alim_quotid_pranzo_bevande=:pranzo_bevande, alim_quotid_pranzo_alimenti=:pranzo_alimenti, alim_quotid_pomeridiano=:pomeridiano, alim_quotid_pomeridiano_bevande=:pomeridiano_bevande, alim_quotid_pomeridiano_alimenti=:pomeridiano_alimenti, alim_quotid_cena=:cena, alim_quotid_cena_bevande=:bevande, alim_quotid_cena_alimenti=:cena_alimenti WHERE id=:id LIMIT 1';
        $result = $db->prepare($sql);
        $result->bindValue(':id', $id, PDO::PARAM_INT);

        $result->bindValue(':past_nome', $malattiaPastNome, PDO::PARAM_STR);
        $result->bindValue(':past_dataInizio', $malattiaPastDataInizio, PDO::PARAM_STR);
        $result->bindValue(':past_data_fine', $malattiaPastDataFine, PDO::PARAM_STR);           
        $result->bindValue(':presenti_nome', $malattiaPresentiNome, PDO::PARAM_STR);
        $result->bindValue(':interventi_traumi', $interventiTraumi, PDO::PARAM_STR);
        $result->bindValue(':traumi_altro', $interventiTraumiAltro, PDO::PARAM_STR);
        $result->bindValue(':traumi_data', $interventiTraumiData, PDO::PARAM_STR);
        $result->bindValue(':attuali_nome', $sintomiAttualiNome, PDO::PARAM_STR);
        $result->bindValue(':attuali_nome_altro', $sintomiAttualiNomeAltro, PDO::PARAM_STR);
        $result->bindValue(':attuali_frequenza', $sintomiAttualiFrequenza, PDO::PARAM_STR);
        $result->bindValue(':attuali_durata', $sintomiAttualiDurata, PDO::PARAM_STR);
        $result->bindValue(':attuali_intensita', $sintomiAttualiIntensita, PDO::PARAM_STR);

        $result->bindValue(':colazione', $alimQuotidColazione, PDO::PARAM_STR);
        $result->bindValue(':colazione_bevande', $alimQuotidColazioneBevande, PDO::PARAM_STR);
        $result->bindValue(':colazione_alimenti', $alimQuotidColazioneAlimenti, PDO::PARAM_STR);
        $result->bindValue(':merenda', $alimQuotidMerenda, PDO::PARAM_STR);
        $result->bindValue(':merenda_bevande', $alimQuotidMerendaBevande, PDO::PARAM_STR);
        $result->bindValue(':merenda_alimenti', $alimQuotidMerendaAlimenti, PDO::PARAM_STR);
        $result->bindValue(':pranzo', $alimQuotidPranzo, PDO::PARAM_STR);
        $result->bindValue(':pranzo_bevande', $alimQuotidPranzoBevande, PDO::PARAM_STR);
        $result->bindValue(':pranzo_alimenti', $alimQuotidPranzoAlimenti, PDO::PARAM_STR);
        $result->bindValue(':pomeridiano', $alimQuotidPomeridiano, PDO::PARAM_STR);
        $result->bindValue(':pomeridiano_bevande', $alimQuotidPomeridianoBevande, PDO::PARAM_STR);
        $result->bindValue(':pomeridiano_alimenti', $alimQuotidPomeridianoAlimenti, PDO::PARAM_STR);
        $result->bindValue(':cena', $alimQuotidCena, PDO::PARAM_STR);
        $result->bindValue(':cena_bevande', $alimQuotidCenaBevande, PDO::PARAM_STR);
        $result->bindValue(':cena_alimenti', $alimQuotidCenaAlimenti, PDO::PARAM_STR);


        $result->execute(); //line 242

I tried multiple times checking all my vars and code but can't find the error.

Thanks

You may have a typo in one of your bindParams, which means you have a mismatch in parameters.Please check and confirm

This query is not correct (or at least i don't know a possible way to use limit in UPDATE queries). So remove LIMIT 1 from the query and try again

You have used with name past_data_fine in query but while binding you used variable as past_dataFine . so repalce your line:

$result->bindValue(':past_dataFine', $malattiaPastDataFine, PDO::PARAM_STR);

with

$result->bindValue(':past_data_fine', $malattiaPastDataFine, PDO::PARAM_STR);

Final version working:

 global $db, $id;

$malattiaPastNome = $_POST['malattia_past_nome'];
$malattiaPastDataInizio = $_POST['malattia_past_data_inizio'];
$malattiaPastDataFine = $_POST['malattia_past_data_fine'];
$malattiaPresentiNome = $_POST['malattia_presenti_nome'];
$interventiTraumi = $_REQUEST['interventi_traumi'];
$interventiTraumiAltro = $_POST['interventi_traumi_altro'];
$interventiTraumiData = $_POST['interventi_traumi_data'];
$sintomiAttualiNome = $_REQUEST['sintomi_attuali_nome'];
$sintomiAttualiNomeAltro = $_POST['sintomi_attuali_nome_altro'];
$sintomiAttualiFrequenza = $_REQUEST['sintomi_attuali_frequenza'];
$sintomiAttualiDurata = $_REQUEST['sintomi_attuali_durata'];
$sintomiAttualiIntensita = $_REQUEST['sintomi_attuali_intensita'];
$alimQuotidColazione = $_REQUEST['alim_quotid_colazione'];
$alimQuotidColazioneBevande = $_REQUEST['alim_quotid_colazione_bevande'];
$alimQuotidColazioneAlimenti = $_REQUEST['alim_quotid_colazione_alimenti'];
$alimQuotidMerenda = $_REQUEST['alim_quotid_merenda'];
$alimQuotidMerendaBevande = $_REQUEST['alim_quotid_merenda_bevande'];
$alimQuotidMerendaAlimenti = $_REQUEST['alim_quotid_merenda_alimenti'];
$alimQuotidPranzo = $_REQUEST['alim_quotid_pranzo'];
$alimQuotidPranzoBevande = $_REQUEST['alim_quotid_pranzo_bevande'];
$alimQuotidPranzoAlimenti = $_REQUEST['alim_quotid_pranzo_alimenti'];
$alimQuotidPomeridiano = $_REQUEST['alim_quotid_pomeridiano'];
$alimQuotidPomeridianoBevande = $_REQUEST['alim_quotid_pomeridiano_bevande'];
$alimQuotidPomeridianoAlimenti = $_REQUEST['alim_quotid_pomeridiano_alimenti'];
$alimQuotidCena = $_REQUEST['alim_quotid_cena'];
$alimQuotidCenaBevande = $_REQUEST['alim_quotid_cena_bevande'];
$alimQuotidCenaAlimenti = $_POST['alim_quotid_cena_alimenti'];
$sql = 'UPDATE utenti2 SET malattia_past_nome=:past_nome , malattia_past_data_inizio=:past_data_inizio , malattia_past_data_fine=:past_data_fine , malattia_presenti_nome=:presenti_nome , interventi_traumi=:interventi_traumi , interventi_traumi_altro=:traumi_altro , interventi_traumi_data=:traumi_data , sintomi_attuali_nome=:attuali_nome , sintomi_attuali_nome_altro=:attuali_nomea , sintomi_attuali_frequenza=:attuali_frequenza , sintomi_attuali_durata=:attuali_durata , sintomi_attuali_intensita=:attuali_intensita , alim_quotid_colazione=:colazione , alim_quotid_colazione_bevande=:colazione_bevande , alim_quotid_colazione_alimenti=:colazione_alimenti , alim_quotid_merenda=:merenda , alim_quotid_merenda_bevande=:merenda_bevande , alim_quotid_merenda_alimenti=:merenda_alimenti , alim_quotid_pranzo=:pranzo , alim_quotid_pranzo_bevande=:pranzo_bevande , alim_quotid_pranzo_alimenti=:pranzo_alimenti , alim_quotid_pomeridiano=:pomeridiano , alim_quotid_pomeridiano_bevande=:pomeridiano_bevande , alim_quotid_pomeridiano_alimenti=:pomeridiano_alimenti , alim_quotid_cena=:cena , alim_quotid_cena_bevande=:cena_bevande , alim_quotid_cena_alimenti=:cena_alimenti WHERE id=:id LIMIT 1';

        $result = $db->prepare($sql);
        $result->bindValue(':id', $id, PDO::PARAM_INT);

        $result->bindValue(':past_nome', $malattiaPastNome, PDO::PARAM_STR);
        $result->bindValue(':past_data_inizio', $malattiaPastDataInizio, PDO::PARAM_STR);
        $result->bindValue(':past_data_fine', $malattiaPastDataFine, PDO::PARAM_STR);
        $result->bindValue(':presenti_nome', $malattiaPresentiNome, PDO::PARAM_STR);
        $result->bindValue(':interventi_traumi', $interventiTraumi, PDO::PARAM_STR);
        $result->bindValue(':traumi_altro', $interventiTraumiAltro, PDO::PARAM_STR);
        $result->bindValue(':traumi_data', $interventiTraumiData, PDO::PARAM_STR);
        $result->bindValue(':attuali_nome', $sintomiAttualiNome, PDO::PARAM_STR);
        $result->bindValue(':attuali_nomea', $sintomiAttualiNomeAltro, PDO::PARAM_STR);
        $result->bindValue(':attuali_frequenza', $sintomiAttualiFrequenza, PDO::PARAM_STR);
        $result->bindValue(':attuali_durata', $sintomiAttualiDurata, PDO::PARAM_STR);
        $result->bindValue(':attuali_intensita', $sintomiAttualiIntensita, PDO::PARAM_STR);

        $result->bindValue(':colazione', $alimQuotidColazione, PDO::PARAM_STR);
        $result->bindValue(':colazione_bevande', $alimQuotidColazioneBevande, PDO::PARAM_STR);
        $result->bindValue(':colazione_alimenti', $alimQuotidColazioneAlimenti, PDO::PARAM_STR);
        $result->bindValue(':merenda', $alimQuotidMerenda, PDO::PARAM_STR);
        $result->bindValue(':merenda_bevande', $alimQuotidMerendaBevande, PDO::PARAM_STR);
        $result->bindValue(':merenda_alimenti', $alimQuotidMerendaAlimenti, PDO::PARAM_STR);
        $result->bindValue(':pranzo', $alimQuotidPranzo, PDO::PARAM_STR);
        $result->bindValue(':pranzo_bevande', $alimQuotidPranzoBevande, PDO::PARAM_STR);
        $result->bindValue(':pranzo_alimenti', $alimQuotidPranzoAlimenti, PDO::PARAM_STR);
        $result->bindValue(':pomeridiano', $alimQuotidPomeridiano, PDO::PARAM_STR);
        $result->bindValue(':pomeridiano_bevande', $alimQuotidPomeridianoBevande, PDO::PARAM_STR);
        $result->bindValue(':pomeridiano_alimenti', $alimQuotidPomeridianoAlimenti, PDO::PARAM_STR);
        $result->bindValue(':cena', $alimQuotidCena, PDO::PARAM_STR);
        $result->bindValue(':cena_bevande', $alimQuotidCenaBevande, PDO::PARAM_STR);
        $result->bindValue(':cena_alimenti', $alimQuotidCenaAlimenti, PDO::PARAM_STR);

        $result->execute();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM