【问题标题】:How to convert and insert string value 9,999.99 to float/double in sql using php如何使用php在sql中将字符串值9,999.99转换并插入到float/double
【发布时间】:2019-06-15 17:16:09
【问题描述】:

我在字符串中有数据数组(从 excel 导入)值。其中一项数据是会计数字,例如:9,999.99

该会计数字的我的 sql 数据类型是浮点数。 每次我插入值..它只存储 9 而不是 9,999.99 我计划以 9999.99 格式存储(不带逗号)

我无法将 sql 数据类型更改为字符串,因为它将用于稍后的计算.. 那么如何转换和存储数据?

感谢您的建议。 谢谢

这是我要插入数据库的代码

// To set HMS daily collection
function set_pbb_data($sheetDataPBB)
{
    $OK = 0;
    $notOK = 0;
    $firstElement = true;

    foreach ($sheetDataPBB as $value)
    {
        if ($firstElement) {
            $firstElement = false;  
        }
        else {
            $dbEntry = array(
            'sett_date'     => $value[0],
            'trans_date'    => $value[1],
            'card_no'       => $value[2],
            'card_type'     => $value[3],
            'trans_curr'    => $value[4],
            'trans_amt'     => $value[5],
            'sett_curr'     => $value[6],
            'sett_amt'      => $value[7],
            'gross_cur'     => $value[8],
            'gross_amt'     => $value[9],
            'mdr'           => $value[10],
            'mid'           => $value[11],
            'approval_code' => $value[12],
            'status'        => $value[13],
            'tid'           => $value[14],
            'batch_no'      => $value[15],
            'dba'           => $value[16],
            'trace_no'      => $value[17],
            'prod_type'     => $value[18]
            );
            if ($value[0] != null){ 
                $this->db->insert('pbb_cc_tbl', $dbEntry);
                if ($this->db->affected_rows() > 0) {
                    $OK++;
                }
                else {  
                    echo '<script>alert(" '.$value[0].' Already Exist!");</script>';
                    $notOK++;
                }   
            }           
        } //end-if
    } //end-foreach

    if ($this->db->affected_rows() > 0) {
        echo '<script>alert("'.$OK.' PBB Data Added Successfully");  </script>';
    }
    else {  
        echo '<script>alert("'.$notOK.' PBB Data Already Exist!"); window.history.back();</script>';
    }       
}

【问题讨论】:

  • 用空字符串替换逗号...?
  • 试试$value = filter_var($value, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);

标签: php sql codeigniter


【解决方案1】:

读取excel中的每一行并使用sql查询一一插入

 insert into database.table (value) values (cast("999,99" as decimal(9,3))); 

【讨论】:

  • 我读取的数据来自excel ..这就是数据包含逗号的原因。我插入我的代码以将数据插入到上面的数据库中
  • _amt 格式的所有字段的数据为 9,999.99。我该如何转换它?谢谢
【解决方案2】:

您可以使用 php 内置函数从字符串中删除“,”

$a ='9,999.99'; //9,999.99
$a=str_replace(',','',$a); //9999.99

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多