2017-01-30 306 views
0

我收到此錯誤信息上線242:致命錯誤:未捕獲PDOException:SQLSTATE [HY093]

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 

我試過多次檢查我所有VAR和代碼,但找不到錯誤。

感謝

+0

我可以看到一對夫婦不想要的空格中提供的代碼('alim_quotid_cena_al imenti =:cena_alimenti')。我想問題是,如果這是你的實際代碼的一部分:) –

+0

嘗試刪除空格,但得到相同的錯誤。 – Fetz

回答

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

你可能有一個錯字在你bindParams之一,這意味着你必須在parameters.Please檢查不匹配,並確認

這個查詢是不正確的(或至少我不不知道在UPDATE查詢中使用限制的可能方法)。因此,從查詢中刪除LIMIT 1,然後再試一次

你在查詢名稱past_data_fine使用,但同時綁定你使用變量作爲past_dataFine。所以 repalce您行:

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

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

嘗試過,但它不能解決問題... – Fetz

+0

檢查更新的答案,並從查詢中刪除限制1並嘗試 –

+0

限制1是好的,只是整理解決方案謝謝。 – Fetz

相關問題