致命错误:未捕获的PDOException:SQLSTATE [HY093]

时间:2017-01-30 08:46:55

标签: php

我在第242行收到此错误消息:

  

致命错误:未捕获PDOException:SQLSTATE [HY093]:参数号无效:绑定变量数与第242行上的令牌数不匹配

     

PDOException:SQLSTATE [HY093]:参数号无效:第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

我多次尝试检查所有变量和代码,但无法找到错误。

由于

2 个答案:

答案 0 :(得分:1)

您的某个bindParams中可能有拼写错误,这意味着您的参数不匹配。请检查并确认

此查询不正确(或者至少我不知道在UPDATE查询中使用限制的可能方法)。因此,请从查询中删除 LIMIT 1 ,然后重试

您在查询中使用了名称past_data_fine,但在绑定时您将变量用作past_dataFine。所以 重新宣传您的专栏:

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

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

答案 1 :(得分:1)

最终版本工作:

 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();