-1

我对小数和 mysql 有一个愚蠢的问题。Mysql版本为:“10.4.19-MariaDB - 源码分发”。我无法理解此列数据类型的正确设置。我想存储然后显示一个像这样的数字:325,130。所以我创建了一个数据类型为十进制(6,3)的列。据我所知,这意味着逗号前3位(左侧)和逗号后3位(右侧),但它不起作用..

此列数据类型的正确语法是什么?或者我应该使用浮点数而不是十进制数?

这是用于将数据存储到数据库中的代码:

$datas = ['rif' => $rif,
        'contratto_id' => $contratto_id,
        'categoria_id' => $categoria_id,
        'tipologia_id' => $tipologia_id,
        'tipologiacomm_id' => $tipologiacomm_id,
        'classe_energetica_id' => $classe_energetica_id,
        'kwh' => $kwh,
        'condizioni_id' => $condizioni_id,
        'statorogito_id' => $statorogito_id,
        'box_id' => $box_id,
        'piano_id' => $piano_id,
        'riscaldamento_id' => $riscaldamento_id,
        'giardino_id' => $giardino_id,
        'ipe' => $ipe,
        'note_classe_energetica' => $note_classe_energetica,
        'prezzo_vendita' => $prezzo_vendita,
        'prezzo_affitto' => $prezzo_affitto,
        'trattativa_riservata' => $trattativa_riservata,
        'mq' => $mq,
        'numero_locali' => $numero_locali,
        'bagni' => $bagni,
        'anno_costruzione' => $anno_costruzione,
        'mq_box' => $mq_box,
        'totale_piano' => $totale_piano,
        'spese_condominiali' => $spese_condominiali,
        'mq_giardino' => $mq_giardino,
        'ce_id' => $ce_id,
        'ci_id' => $ci_id,
        'visualizzazioni' => $visualizzazioni,
        'data_inserimento' => $data_inserimento,
        'data_agg' => $data_agg,
        'id' => $id
];

$sql = "UPDATE annuncio SET rif = :rif,
contratto_id = :contratto_id,
categoria_id = :categoria_id,
tipologia_id = :tipologia_id,
tipologiacomm_id = :tipologiacomm_id,
classe_energetica_id = :classe_energetica_id,
kwh = :kwh,
condizioni_id = :condizioni_id,
statorogito_id = :statorogito_id,
box_id = :box_id,
piano_id = :piano_id,
riscaldamento_id = :riscaldamento_id,
giardino_id = :giardino_id,
ipe = :ipe,
note_classe_energetica = :note_classe_energetica,
prezzo_vendita = :prezzo_vendita,
prezzo_affitto = :prezzo_affitto,
trattativa_riservata = :trattativa_riservata,
mq = :mq,
numero_locali = :numero_locali,
bagni = :bagni,
anno_costruzione = :anno_costruzione,
mq_box = :mq_box,
totale_piano = :totale_piano,
spese_condominiali = :spese_condominiali,
mq_giardino = :mq_giardino,
ce_id = :ce_id,
ci_id = :ci_id,
visualizzazioni = :visualizzazioni,
data_inserimento = :data_inserimento,
data_agg = :data_agg
 WHERE id = :id";

$stmt = $pdo->prepare($sql);
if(!$stmt->execute($datas)){
    throw new Exception(sprintf(
        "Errore esecuzione PDO: %s", implode(',', $pdo->errorInfo())
    ));
}

这是表的结构:

    id Primaria     int(11)             No  Nessuno         AUTO_INCREMENT
2   rif     text    utf8_general_ci         Sì  NULL        
3   contratto_id    int(11)             Sì  NULL        
4   categoria_id    int(11)             Sì  NULL        
5   tipologia_id    int(11)             Sì  NULL        
6   tipologiacomm_id    int(11)             No  Nessuno         
7   classe_energetica_id    int(11)             Sì  NULL        
8   kwh     int(11)             Sì  NULL        
9   condizioni_id   int(11)             Sì  NULL        
10  statorogito_id  int(11)             Sì  NULL        
11  box_id  int(11)             Sì  NULL        
12  piano_id    int(11)             Sì  NULL        
13  riscaldamento_id    int(11)             Sì  NULL        
14  comune_id   int(11)             Sì  NULL        
15  provincia_id    int(11)             Sì  NULL        
16  regione_id  int(11)             Sì  NULL        
17  giardino_id     int(11)             Sì  NULL        
18  ipe     decimal(6,3)            Sì  NULL        
19  note_classe_energetica  text    utf8_general_ci         Sì  NULL        
20  prezzo_vendita  decimal(10,2)           Sì  NULL        
21  prezzo_affitto  decimal(10,2)           Sì  NULL        
22  trattativa_riservata    int(11)             Sì  NULL        
23  mq  int(11)             Sì  NULL        
24  numero_locali   int(11)             Sì  NULL        
25  bagni   int(11)             Sì  NULL        
26  anno_costruzione    int(11)             Sì  NULL        
27  mq_box  int(11)             Sì  NULL        
28  totale_piano    int(11)             Sì  NULL        
29  spese_condominiali  decimal(10,2)           Sì  NULL        
30  mq_giardino     int(11)             Sì  NULL        
31  ce_id   int(11)             Sì  NULL        
32  ci_id   int(11)             Sì  NULL        
33  testo_ita   text    utf8_general_ci         Sì  NULL        
34  testo_fr    text    utf8_general_ci         Sì  NULL        
35  data_inserimento    date            Sì  NULL        
36  data_agg    date            Sì  NULL        
37  ann_visibile    int(11)             Sì  NULL        
38  indirizzo   text    utf8_general_ci         Sì  NULL        
39  civico  int(11)             Sì  NULL        
40  cap     int(11)             Sì  NULL        
41  indirizzo_visibile  int(11)             Sì  NULL        
42  visualizzazioni     int(11)             Sì  NULL
4

1 回答 1

0

问题解决了。这种数据类型的右列定义是小数(6,3)。问题出在这一行:

$ipe = filter_input(INPUT_POST, 'ipe', FILTER_SANITIZE_NUMBER_INT);

变成:

$ipe = $_POST['ipe'];

解决了这个问题。将变量发布为:print_r($ipe);表明缺少“点”可能是由于清理字符串。

希望这可以帮助别人。

于 2021-09-04T15:10:14.833 回答