【问题标题】:I have imported csv into table using php but facing in problem?我已经使用 php 将 csv 导入到表中,但遇到了问题?
【发布时间】:2020-04-03 12:49:36
【问题描述】:

我在 excel 文件中遇到这个问题,值为 1.93E+11,当我将 csv 导入 MYSQL 表时,它没有转换为 193000000000。与1.93E+11保持一致

我该怎么做才能将其转换为我的代码

  if ($_FILES["file"]["size"] > 0) {

    $file = fopen($fileName, "r");

    while (($column = fgetcsv($file, 58000, ",")) !== FALSE) {
            $sqlInsert = "INSERT into excel ()
               values ('" . $column[0] . "','" . $column[1] . "')";
        $result = mysqli_query($conn, $sqlInsert);

        if (! empty($result)) {
            $type = "success";
            $message = "CSV Data Imported into the Database";

【问题讨论】:

  • ...这是我不喜欢 Excel 的原因之一...试试Calc,你会遇到更少的问题(无论如何)
  • php中有什么东西可以通过我将它转换成完整的形式,比如193000000000
  • 老实说,我担心这个数字太大而无法放入数据库中的 INT(11) UNSIGNED 字段...您可以使用非标准的 BIGINT 数据类型,或者,由于 PHP 是松散类型的,只需将其作为文本存储在数据库中,然后根据 h00ligan 的回答在应用程序中处理类型。确保您使用的是 64 位版本的 PHP,否则(再次)这个数字会太大。

标签: php csv export-to-csv


【解决方案1】:

您可以将其类型转换为浮点数:

$value = (float) $column[1];

为确保您确实有一个浮点数,您可以尝试像这样检查

if (is_numeric($column[1]) && !is_int($column[1])) {
    $value = (float) $column[1];
}

【讨论】:

    猜你喜欢
    • 2018-02-24
    • 2016-04-06
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    相关资源
    最近更新 更多